我还在学习 bash shell。
我想递归地查找并删除给定文件夹的子目录中的 svn 文件。我犯了一个错误,就是签出而不是克隆,所以我正在努力清理我的混乱。
我已经尝试过这个,但我只得到找到的所有文件的输出:
rm | find -name ".svn"
当我运行它时,我没有得到任何输出,并且文件仍然存在:
find . -executable -o ! -regex '.*\.svn' -exec rm -i {} \+
答案1
更简单的方法是出口您想要的修订版而不是检查它。尝试svn help export
使用 bash shell。
如果您确实想使用find
来遍历并删除所有调用的子目录,.svn
您可以这样做:
find /path/to/search -type d -iname .svn -print0 | xargs -0 rm
编辑
-type d
#仅查找目录-iname .svn
#不区分大小写的匹配,可能没有必要-print0
#打印完整的文件名,后跟空字符而不是换行符。它允许带有空格或其他空白的文件名正确传递到xargs -0
答案2
shopt -s globstar
rm -r **/.svn
答案3
大多数版本都有find
删除操作:
$ find /path/in/question -type d -name .svn -delete
确保您在没有删除的情况下运行它并首先查看结果!