Linux“查找”实用程序中的广度优先选项?

Xiè*_*léi 13 linux find

Linux“查找”实用程序中是否有任何广度优先/深度优先选项?

Gil*_*il' 5

没有任何内置的东西可以找到,即使是 GNU 也可以找到。您可以对 的输出进行后处理find以按斜杠数排序,例如使用 Perl:

find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
Run Code Online (Sandbox Code Playgroud)
  • <> 是所有输入行的列表;
  • $a =~ s!/!/!g是 中的斜线数$a,我们将其用作排序标准。

如果可以使用 zsh:

echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
Run Code Online (Sandbox Code Playgroud)
  • **/* 列出当前目录和子目录中的所有文件。
  • 括号内的内容是 glob 限定符。
  • glob 限定符oe控制返回匹配项的顺序:它们REPLY在每个匹配项的引号中运行代码后按 的值排序,REPLY初始设置为匹配的路径。
  • 所述代码转换$REPLY为删除除斜杠以外的所有内容。所以结果包括深度 1 的所有内容(空结果$REPLY),然后深度 2 的所有内容($REPLY最终为/),深度 3 ( //) 等。