删除从根文件夹到其所有子文件夹的所有 .svn 文件夹

删除从根文件夹到其所有子文件夹的所有 .svn 文件夹

我有一个文件夹,里面有一个.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

您可以结合findrmxargs从根目录中查找并删除所有 .svn 子目录。

首先测试该find命令以检查它是否找到正确的子目录,

find . -name ".svn"

这应该会显示当前工作目录中所有 .svn 子目录的列表 ( .)。确保这些确实是您要删除的目录。然后运行以下命令来实际删除它们(注意:此操作无法撤消),

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

请参阅man rmman find了解选项的解释。

答案4

我使用了这个技术:

查找 [路径] -name .svn -print0 | xargs -0 rm -R

对我来说,它效果很好。

相关内容