我想根据目录执行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
选项,则会考虑最后一个选项并将其应用于整个命令。