递归删除SVN文件

chr*_*lee 6 subversion find rm

我还在学习 bash shell。

我想递归地查找和删除给定文件夹的子目录中的 svn 文件。我犯的错误是检查而不是克隆,所以我试图清理我的烂摊子。

我试过这个,但我只得到所有找到的文件的输出:

rm | find -name ".svn"

当我运行它时,我没有输出,文件仍然存在: find . -executable -o ! -regex '.*\.svn' -exec rm -i {} \+

Sea*_* C. 12

更简单的方法是导出您想要的修订版,而不是将其检出。svn help export在 bash shell 中尝试。

如果你真的想用来find遍历和删除所有调用的子目录,.svn你可以这样做:

find /path/to/search -type d -iname .svn -print0 | xargs -0 rm

编辑

  • -type d #只查找目录
  • -iname .svn #case insensitive 匹配,可能没有必要
  • -print0#打印完整的文件名,后跟一个空字符而不是换行符。它允许将带有空格或其他空格的文件名正确传递给xargs -0

  • 那不应该是`rm -r`吗?普通的旧`rm` 不会删除目录。另外,我建议在此处将 `-prune` 切换到 `find`:`rm -r` 已经删除了所有子目录,因此无需遍历它们。 (3认同)