如何删除所有具有特定名称的目录?

如何删除所有具有特定名称的目录?

在某个目录下,我有一堆名为 的目录Debug。如何删除所有Debug目录?

答案1

不清楚 --- 在目录下dir_a只能有一个名为 的目录Debug。或者您是说您有、dir_a/Debug等等?dir_a/dir_b/Debugdir_a/dir_c/Debug

您可以列出所有名为的目录确切地 Debug目录下dir_a有:

cd dir_a   # or whatever you need to go there
find . -type d -name Debug

Debug这将列出当前目录下的所有目录。要删除它们(仔细检查,这不可撤销):

find . -depth -type d -name Debug -exec rm -r {} \; 

-depthDebug/Debug/将会列出Debug/以避免错误。

详细地:

  1. find . -type d -name Debug将在当前目录 ( .) 下的所有目录中搜索既是目录 ( -type d) 又是名称为“Debug” ( -name Debug) 的条目。

  2. 添加的-depth标志使搜索深度优先(这意味着在“浅”匹配之前找到“深”匹配)。

  3. -exec ... \;告诉对每个匹配find执行命令...。(用引号引起分号,否则 shell 会对其进行解释)。

  4. 在上面的命令中...,特殊符号{}被当前匹配替换。

所以用简单的英语来说就是:深度优先,找到此目录下名为“Debug”的每个目录,然后对每个目录执行命令,rm -r后跟目录的全名。

相关内容