Gibt es eine Option für die Breite zuerst / Tiefe zuerst im Linux-Dienstprogramm `find '?
12
Es gibt nichts Eingebautes zu finden, auch nicht GNU. Sie können die Ausgabe von find
nach der Anzahl der Schrägstriche sortieren, zum Beispiel mit Perl:
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<>
ist die Liste aller Eingabezeilen;$a =~ s!/!/!g
ist die Anzahl der Schrägstriche $a
, die wir als Sortierkriterium verwenden.Wenn Sie zsh verwenden können:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/*
listet alle Dateien im aktuellen Verzeichnis und den Unterverzeichnissen auf.oe
steuert die Reihenfolge, in der Übereinstimmungen zurückgegeben werden: Sie werden nach dem Wert von, REPLY
nachdem der Code hier ausgeführt wurde, in Anführungszeichen für jede Übereinstimmung sortiert, wobei REPLY
anfangs der übereinstimmende Pfad festgelegt wurde.$REPLY
um, um alles außer Schrägstrichen zu löschen. Das Ergebnis besteht also aus allem in Tiefe 1 (Leerergebnis $REPLY
), dann aus allem in Tiefe 2 ( $REPLY
endet zu sein /
), Tiefe 3 ( //
) usw.
Nee
In dieser Frage zu SO finden Sie Problemumgehungen.
quelle
Mein Gefühl ist, dass du kannst. Es beinhaltet grep und so und eine Schleife, aber ich finde, es funktioniert sehr gut, speziell für Ihren Fall, dass der Fund nicht abgeschlossen werden muss.
Es ist ressourcenintensiver, weil:
Das ist gut, weil:
Sie können es auch ganz einfach in eine Zeile einpassen:
Aber ich bevorzuge kleine Skripte gegenüber dem Tippen ...
quelle