-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). Вы хотите только перечислить файлы, или вы хотите использовать другие праймериз?