Find

在 AIX 中查找的等效 maxdepth

  • October 3, 2020

我試圖通過遮罩在某個目錄中獲取所有文件,而無需在子目錄中遞歸搜尋。AIX 中沒有此選項-maxdepth 0

我聽說過-prune,但仍然不知道它是如何工作的。

我想命令應該看起來像

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

但它不起作用。

您能否為我寫一個正確的命令並解釋它是如何工作的?

UPD

似乎命令

find dir ! -path dir -prune

列印 中的所有文件和目錄dir,但不列印 中的文件和目錄dir/*,因此我可以將它用於我的案例。

你會想要:

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將匹配 on dir,但不匹配dir/dir(因此dir將是唯一不會修剪的目錄)。-path但在舊版本的 AIX 中可能不可用。

更一般地說,對於 GNU’s 的標準等效項-maxdepth n,請參閱Limit POSIX find to specific depth?

引用自:https://unix.stackexchange.com/questions/372994