Il -depth
principale a find
causare una ricerca approfondita prima.
Tuttavia, la sequenza predefinita non è una ricerca per ampiezza.
La sequenza predefinita potrebbe essere descritta in modo informale come "un attraversamento in profondità che gestisce i nodi quando vengono incontrati per la prima volta anziché farlo durante il backtracking".
Ho un reale bisogno di ampie ricerche prima. Come posso find
comportarmi in questo modo?
A titolo illustrativo, con la seguente configurazione:
$ mkdir -p alpha/{bravo,charlie,delta}
$ touch alpha/charlie/{alpha,beta,gamma,phi}
find
ha il seguente comportamento predefinito:
$ find alpha
alpha
alpha/charlie
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/delta
alpha/bravo
e con -depth
, si comporta come segue:
$ find alpha -depth
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/charlie
alpha/delta
alpha/bravo
alpha
Tuttavia, ciò che voglio è la seguente (fittizia) opzione:
$ find alpha -bfs
alpha
alpha/charlie
alpha/delta
alpha/bravo
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
In altre parole, devo find
elaborare / riferire su tutti i file / directory a una determinata profondità prima di procedere oltre.
Come posso fare questo?
-bfs
non sarebbe proprio quello di cui ho bisogno ... Ho un semplice script che genera un indice per un grande progetto GitLab, adatto per l'inclusione nel Wiki GitLab. Rende le intestazioni gerarchicamente basate sui nomi di directory. Funziona benissimo, tranne per il fatto che nella struttura di file di esempio sopra sarebbe messa delta
sotto il charlie
sottotitolo, anziché sotto l' alpha
intestazione principale .
find
output è in ordine alfabetico. Non ho idea del perché ....
-bfs
potrebbe tornare utile, anche se non si adatta perfettamente a questo caso d'uso.
find
(almeno, non solofind
). Vuoi solo elencare i file o vuoi usare altri primari?