从根文件夹中删除任何.svn文件夹到其所有子文件夹

我有一个.SVN解决scheme的文件夹。

我想遍历整个目录及其子目录,并删除.svn文件夹。

我安装了bash,所以如果需要的话我可以使用grep。

find <path> -type d -name '.svn' -exec rm -rf {} \+ 

查找名称为“.svn”的所有目录,并recursion删除它们。

如果你没有拥有checkout目录,并且不明白为什么这些目录是存在的,我会非常小心的。 还要注意roe关于svn export的回答。

在bash中:

 removesvn() { cd $1 for f in */.svn; do [ -d "$f" ] && removesvn ${f%/.svn} done [ -d "$f" ] && rm -rf .svn } removesvn . 

应该浏览包含.svn文件夹的所有文件夹并将其删除。

然而,你可能更好使用svn导出( svn export我beleive)没有版本信息的香草树,这可能是你在找什么。

编辑
请注意,上面的bash脚本只会删除连接到原始文件夹的.svn文件夹(即,如果b不包含.svn,它将不会删除/ b / c / .svn)。 如果你只是想清除文件系统中的.svn文件,find可能会做得更好。

您可以将findrmxargs结合使用,从根目录中查找和删除所有的.svn子目录。

首先testingfind命令来检查它是否find正确的子目录,

 find . -name ".svn" 

这应显示当前工作目录( . )中的所有.svn子目录的列表。 确保这些确实是你想要删除的目录。 然后运行以下命令以实际删除它们(注意:这不能被撤消),

 find . -name ".svn" | xargs rm -vrf 

man rmman find解释的选项。

我使用这种技术:

find[path] -name .svn -print0 | xargs -0 rm -R

它对我来说工作得很好。