find ./myfolder -type d -name example -exec rm -rf {} +
删除名为example的每个目录。
但是我怎么能得到这样的东西呢?
find ./myfolder -type d -name example -o -name docs -exec rm -rf {} +
删除所有示例AND docs目录?
答案 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.