Die -depth
primäre find
Ursache bewirkt, dass eine Tiefensuche durchgeführt wird.
Die Standardsequenz ist jedoch keine Breitensuche.
Die Standardsequenz könnte informell als "Tiefen-Erste-Durchquerung, die Knoten behandelt, wenn sie zum ersten Mal angetroffen werden, anstatt dies während des Zurückverfolgens zu tun" beschrieben werden.
Ich habe ein tatsächliches Bedürfnis nach einer breiten ersten Suche. Wie kann ich mich so find
verhalten?
Zur Veranschaulichung mit folgendem Setup:
$ mkdir -p alpha/{bravo,charlie,delta}
$ touch alpha/charlie/{alpha,beta,gamma,phi}
find
hat das folgende Standardverhalten:
$ find alpha
alpha
alpha/charlie
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/delta
alpha/bravo
und mit -depth
führt es wie folgt aus:
$ find alpha -depth
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/charlie
alpha/delta
alpha/bravo
alpha
Was ich jedoch möchte, ist die folgende (fiktive) Option:
$ find alpha -bfs
alpha
alpha/charlie
alpha/delta
alpha/bravo
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
Mit anderen Worten, ich muss alle Dateien / Verzeichnisse in einer bestimmten Tiefe find
verarbeiten / melden, bevor ich fortfahre.
Wie kann ich das machen?
-bfs
das nicht ganz das ist, was ich brauche ... Ich habe ein einfaches Skript, das einen Index für ein großes GitLab-Projekt generiert, das für die Aufnahme in das GitLab-Wiki geeignet ist. Die Header werden hierarchisch basierend auf Verzeichnisnamen erstellt. Es funktioniert hervorragend, außer dass es in der obigen Beispieldateistruktur delta
unter dem charlie
Unterheader und nicht unter dem übergeordneten alpha
Header abgelegt wird .
find
Ausgabe ist alphabetisch sortiert. Keine Ahnung warum ....
-bfs
könnte nützlich sein, auch wenn es nicht perfekt diesen Anwendungsfall passt.
find
(zumindest nicht nur mitfind
). Möchten Sie nur die Dateien auflisten oder andere Primärdaten verwenden?