find 的 -depth 选项是否意味着深度优先树遍历?

find 的 -depth 选项是否意味着深度优先树遍历?

据我了解,-depth该命令的选项find会导致在深度优先遍历树结构期间在退出目录时发生指定的操作(也许我理解错误)。

如果没有-depth指定选项,它通常会在深度优先遍历完成之前执行操作,还是对目录进行广度优先遍历并首先正常运行该操作?

答案1

find-depth无论是否指定,都使用深度优先策略(与广度优先相反) 。-depth只保证子目录在其父目录之前被处理。

一个简单的例子:

mkdir -p a/{1,2,3} b c
find .

产生

.
./a
./a/2
./a/1
./a/3
./b
./c

然而

find . -depth

产生

./a/2
./a/1
./a/3
./a
./b
./c
.

如果你想要广度优先搜索,你可以使用bfs这是 的广度优先实现find

相关内容