AIX 中 find 的等效最大深度

AIX 中 find 的等效最大深度

我试图通过掩码获取某个目录中的所有文件,而无需在子目录中递归搜索。-maxdepth 0AIX 中没有这样的选项。

我听说过-prune,但仍然不明白它是如何工作的。

我想该命令应该类似于

find dir \( ! -name dir -prune -type f \) -a -name filemask

但它不起作用。

您能为我写一个正确的命令并解释它是如何工作的吗?

UPD

看来是命令

find dir ! -path dir -prune

打印 中的所有文件和目录dir,但不打印 中的文件和目录dir/*,因此我可以将其用于我的情况。

答案1

你想要:

find dir/. ! -name . -prune -type f -name filemask

或者:

find dir ! -path dir -prune -type f -name filemask

filemask要查找调用的常规文件,dir而无需在dir.

对于find dir ! -name dir -prune,如果有dir/dir目录,您就会遇到问题。

dir/.方法可以解决这个问题,因为除了作为参数传递的文件之外,find不会遇到任何其他被调用的文件。.dir/.

-path方法通过查看文件的文件路径(而不是仅名称)来解决这个问题,-path dir将匹配dir,但不匹配dir/dir(因此dir将是唯一不会修剪的目录)。-path但在旧版本的 AIX 中可能不可用。

更一般地说,对于 GNU 的标准等效项-maxdepth n,请参见将 POSIX 查找限制到特定深度?

答案2

在 AIX 中,您可以使用-prune选项。

find ./* -prune

相关内容