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

Find and remove all directories with multiple names?

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

删除每个名为 example 的目录。

但是我怎样才能让这样的东西起作用呢?

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

要删除所有示例和文档目录?

您必须添加显式分组:

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.