我有一个文件夹,里面有一个.SVN 解决方案。
我想遍历整个目录及其子目录,并删除 .svn 文件夹。
我已经安装了 bash,因此如果需要的话我可以使用 grep。
答案1
find <path> -type d -name '.svn' -exec rm -rf {} \+
查找所有名称为“.svn”的目录并递归删除它们。
如果您不拥有签出目录并且不理解为什么存在这些目录,我会非常谨慎地执行此操作。另请注意鱼子的回答关于svn export
。
答案2
在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
我相信)没有版本信息的 vanilla 树,这可能就是您想要的。
编辑
请注意,上述 bash 脚本仅删除与原始文件夹关联的 .svn 文件夹(即,如果 b 不包含 .svn,则不会删除 a/b/c/.svn)。如果您只想清除文件系统中的 .svn 内容,find 可能会做得更好。
答案3
您可以结合find
和rm
来xargs
从根目录中查找并删除所有 .svn 子目录。
首先测试该find
命令以检查它是否找到正确的子目录,
find . -name ".svn"
这应该会显示当前工作目录中所有 .svn 子目录的列表 ( .
)。确保这些确实是您要删除的目录。然后运行以下命令来实际删除它们(注意:此操作无法撤消),
find . -name ".svn" | xargs rm -vrf
请参阅man rm
和man find
了解选项的解释。
答案4
我使用了这个技术:
查找 [路径] -name .svn -print0 | xargs -0 rm -R
对我来说,它效果很好。