我有以下结构:
/.svn
/bla/.svn
/hello/.svn
/bla/bla/bla/.svn
... etc
我想删除所有 .svn 文件夹。我该怎么做?
它不是:
rm -rf .svn
在 Windows 中,您可以使用 /s 触发器。在 Linux 中如何操作?
答案1
使用命令查找:
find . -type d -name .svn -exec rm -rf {} \;
{} 是文件名,-type d 表示目录。
警告:谨慎使用 find 和 rm!
答案2
find . -depth -type d -name .svn -exec rm -rf {} \;
与已提出的其他解决方案的区别:
如果没有
-depth
,命令将在删除 .svn 目录后尝试递归进入该目录,从而导致错误消息。如果没有
-type d
(这会将您的搜索限制在目录中),您还将删除文件给定名称。(您很可能没有,但在执行“find”和“rm”组合时,您不应该冒险。)
答案3
如果您的确切需求是删除.svn
目录,而不是删除特定命名目录的更通用解决方案,那么您应该考虑使用svn 导出:
$ svn export . /tmp/new-dir
这将在 处创建一个 svn 工作区副本,将当前目录中的 svn 工作区复制到新目录中/tmp/new-dir
。您无需先创建新目录。Subversion 会为您完成这项工作。
答案4
find . -name .svn -exec rm -rf {}\;
应该对你有用。
它首先找到所有名为的文件夹,.svn
然后rm -rf
对找到的每个文件夹执行操作。
结果:
不再有 .svn 文件夹