删除 Linux 中具有特定名称的所有文件夹及其下的文件?

删除 Linux 中具有特定名称的所有文件夹及其下的文件?

我有以下结构:

/.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 文件夹

相关内容