删除.git .repo .gitignore 总结
来源:互联网 发布:java输入字符串语句 编辑:程序博客网 时间:2024/05/02 02:26
今天写了一个脚本,要删除代码树中所有的.git目录 .repo目录 和所有.gitignore文件
思路:由于有文件夹嵌套情况 不适合用ls 故用find命令查找 并删除
脚本虽短,但还是遇到了许多问题:
filepath=$1;
find
do
echo "$fileName"; rm -rf "$fileName" ;
done
这是第一版代码 问题是所有内容都没有输出.
原因:1\ find 命令的print0 选项输出文件的全路径且以’\0’结尾 但是只能输出普通文件,不能输出目录文件的路径 所以.git和.repo路径不能输出
2\read -d $'\0'表示读取直到'\0'结束读取,由于print0不能输出目录 所以开始while没有读取到文件条件不为真 所有直接结束循环 结束脚本程序
filepath=$1;
find
do
echo "$fileName"; rm -rf "$fileName" ;
done
这是第二版代码: 依然没有输出
原因:1\ find 命令不加print输出为’\n’结尾 while 依然读取不到以’\0’结尾字符串 所以条件为假 跳出循环 结束脚本
最终脚本:
find ${filepath:=./} -name “.git” -o -name “.repo” -o -name “.gitignore” | while read -r fileName
do
echo "$fileName";
rm -rf “$fileName” ;
done
成功
原因:1\find的每行输出以’\n’结尾 while不需判断以’\0’结尾 所以成功运行循环
总结:
shell脚本中, 管道不是输入端分布输入数据到管道右端的 而是执行完成后将数据一次性输出到管道右边 .
等效为
find ${filepath:=./} -name “.git” -o -name “.repo” -o -name “.gitignore” >> a ;
while read -r -d $’0’ fileName
do
echo "$fileName"; rm -rf "$fileName" ;
done << a ;
- 删除.git .repo .gitignore 总结
- git&repo常见问题总结
- 关于git的.gitignore文件的总结
- 删除android代码中的.git/.repo目录
- 遍历删除.svn .git .repo目录
- git repo 删除生成的临时文件
- git gitignore
- Git 【.gitignore】
- Git .gitignore
- Git gitignore
- Repo和Git 版本管理常用命令总结
- Repo和Git 版本管理常用命令总结
- Repo和Git 版本管理常用命令总结 .
- Repo和Git 版本管理常用命令总结
- repo git 更新某个文件目录总结
- Repo和Git 版本管理常用命令总结
- gitignore总结
- Git Repo
- 为何C语言(的函数调用)需要堆栈,而汇编语言却不需要堆栈
- uva 111 History Grading 最长公共子序列
- c++ new/delete的用法
- 【VC疑难】LINK : fatal error LNK1123: failure during conversion to COFF: file invalid
- iOS 开发中正则表达式实践(一)
- 删除.git .repo .gitignore 总结
- MVC 第三章 架构了解
- PCM格式
- android 之手机客户端登陆
- 根据Request获取客户端IP
- 例题3.5 易爆物 UVa1160
- 【算法杂谈】算法竞赛中数论相关
- 浅谈JAVA的线程安全与性能之间的权衡
- c++Primer,十一,泛型算法