的-depth
伯〜find
导致它执行深度优先搜索。
但是,默认序列不是广度优先搜索。
默认序列可以非正式地描述为“深度优先遍历,它在第一次遇到节点时进行处理,而不是在回溯过程中进行处理。”
我实际需要广度优先搜索。如何使find
这种行为?
为了说明,请使用以下设置:
$ mkdir -p alpha/{bravo,charlie,delta}
$ touch alpha/charlie/{alpha,beta,gamma,phi}
find
具有以下默认行为:
$ find alpha
alpha
alpha/charlie
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/delta
alpha/bravo
并使用-depth
,它的执行如下:
$ find alpha -depth
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/charlie
alpha/delta
alpha/bravo
alpha
但是,我想要以下(虚拟)选项:
$ find alpha -bfs
alpha
alpha/charlie
alpha/delta
alpha/bravo
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
换句话说,我需要在给定深度下find
处理/报告所有文件/目录,然后再继续。
我怎样才能做到这一点?
-bfs
不是我所需要的...我有一个简单的脚本,可以为大型GitLab项目生成索引,适合包含在GitLab Wiki中。它根据目录名称分层构造标题。它的伟大工程,除了在示例文件结构上面会放delta
的下charlie
的子报头,而不是依据母alpha
头。
find
输出是按字母顺序排序的。不知道为什么....
-bfs
可能会派上用场,即使它不完全适合此用例。
find
(至少,不仅与find
)在一起。您是否只想列出文件,还是要使用其他主文件?