“find”是否支持多个“maxdepth”条件?

“find”是否支持多个“maxdepth”条件?

我想根据目录执行find多个 s 的搜索。maxdepth

这可能吗?这似乎-maxdepth是“全球性的”,但我很好奇是否有一些解决方法。

(我知道可以执行两个单独的命令,但使用一个命令会更快,并且会使调用代码更简单)

答案1

您可以使用不同的匹配路径名来模拟它-prune。例如,要匹配/etc深度 1 和/lib深度 2:

find /etc /lib/ \
    \( -regex '/etc/[^/]*/.*'       -prune \) \
 -o \( -regex '/lib/[^/]*/[^/]*/.*' -prune \) \
 -o -print

您需要小心添加最后一行以打印或以其他方式对其余文件和目录进行操作。

答案2

不,您不能-maxdepth对一系列find测试的不同部分应用不同的选项。正如您所指出的,由于它是一个全局选项,因此它适用于所有测试。如果指定多个-maxdepth选项,则会考虑最后一个选项并将其应用于整个命令。

相关内容