在某个目录下,我有一堆名为 的目录Debug
。如何删除所有Debug
目录?
答案1
不清楚 --- 在目录下dir_a
只能有一个名为 的目录Debug
。或者您是说您有、dir_a/Debug
等等?dir_a/dir_b/Debug
dir_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 {} \;
-depth
Debug/Debug/
将会列出Debug/
以避免错误。
详细地:
find . -type d -name Debug
将在当前目录 (.
) 下的所有目录中搜索既是目录 (-type d
) 又是名称为“Debug” (-name Debug
) 的条目。添加的
-depth
标志使搜索深度优先(这意味着在“浅”匹配之前找到“深”匹配)。-exec ... \;
告诉对每个匹配find
执行命令...
。(用引号引起分号,否则 shell 会对其进行解释)。在上面的命令中
...
,特殊符号{}
被当前匹配替换。
所以用简单的英语来说就是:深度优先,找到此目录下名为“Debug”的每个目录,然后对每个目录执行命令,rm -r
后跟目录的全名。