查找并删除多个名称的所有目录?

时间:2015-02-03 01:29:16

标签: linux unix

find ./myfolder -type d -name example -exec rm -rf {} +

删除名为example的每个目录。

但是我怎么能得到这样的东西呢?

find ./myfolder -type d -name example -o -name docs -exec rm -rf {} +

删除所有示例AND docs目录?

1 个答案:

答案 0 :(得分:2)

您必须添加显式分组:

find ./myfolder -type d \( -name example -o -name docs \) -exec rm -rf {} +

这是必需的,因为find与编程和数学一样,解释-o的优先级低于您隐含的-a。您的原始查询被解释为:

find (dirs, those named "example") OR (files named "docs", and delete them)

PS:为了您将来的方便,shellcheck会自动警告许多类似的事情:

In yourscript line 1:
find ./myfolder -type d -name example -o -name docs -exec rm -rf {} +
                                                    ^-- SC2146: This action ignores everything before the -o. Use \( \) to group.