这是 RHEL 5.6 和 GNU find 4.2.27。
我试图从查找中排除一个目录,并希望确保该目录不会下降到。我已经看到很多帖子说 -prune 会这样做 - 确实如此。我可以运行这个命令:
find . -type d -name "./.snapshot*" -prune -o -print
它有效。我通过 strace 运行它并验证它没有下降到 .snapshot。
我还想仅在某个级别查找目录。我可以使用 mindepth 和 maxdepth 来做到这一点:
find . -maxdepth 8 -mindepth 8 -type d
它给了我所有 8 级的目录,包括 .snapshot 中的内容。
如果我结合 prune 和 mindepth 和 maxdepth 选项:
find . -maxdepth 8 -mindepth 8 -type d \( -path "./.snapshot/*" -prune -o -print \)
输出是正确的 - 除了 .snapshot 中的内容外,我看到所有 dirs 都下降了 8 级,但是如果我通过 strace 运行该查找,我看到 .snapshot 仍在下降到 1 到 8 级。
我尝试了各种不同的组合,移动优先括号,重新排列表达式组件 - 产生正确输出的所有内容仍然下降到 .snapshot。
我在手册页中看到 -prune 不适用于 -depth,但没有说明 mindepth 和 maxdepth。
任何人都可以提供任何建议吗?
谢谢...比尔