-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). Ви хочете лише перелічити файли, або ви хочете використовувати інші праймери?