用某个名称删除linux中它下面的所有文件夹和文件?

cod*_*ama 5 linux file-management

我有以下结构:

/.svn
/bla/.svn
/hello/.svn
/bla/bla/bla/.svn
... etc
Run Code Online (Sandbox Code Playgroud)

我想删除所有 .svn 文件夹。我该怎么做?

它不是:

rm -rf .svn
Run Code Online (Sandbox Code Playgroud)

在 Windows 中,您使用 /s 触发器。你是怎么做到的?

Pet*_*ric 11

使用命令查找:

find . -type d -name .svn -exec rm -rf {} \;

{} 是文件名,-type d 表示目录。

警告:请谨慎使用 find 和 rm!


Dev*_*lar 9

find . -depth -type d -name .svn -exec rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

与已经提出的其他解决方案的差异:

  • 如果没有-depth,该命令将在删除后尝试递归到 .svn 目录,从而导致错误消息。

  • 没有-type d(将您的搜索限制为目录),您还将删除给定名称的文件。(很可能你不会有任何东西,但是在组合使用“find”和“rm”时你不应该冒险。)


Dou*_*ris 5

如果您的确切需要是删除.svn目录而不是删除特定命名目录的更通用的解决方案,您应该考虑使用svn export

$ svn export . /tmp/new-dir
Run Code Online (Sandbox Code Playgroud)

这将在当前目录中创建一个 svn 工作区的副本到一个新目录中/tmp/new-dir。您无需先创建新目录。Subversion 会为你解决这个问题。


S.H*_*tra 2

find . -name .svn -exec rm -rf {}\;
Run Code Online (Sandbox Code Playgroud)

应该为你工作。
它首先找到所有名为的文件夹.svn 然后执行rm -rf,然后对找到的每个文件夹

结果:
不再有 .svn 文件夹