
Ich habe unten den Suchbefehl angegeben, um alle Dateien in einem Ordner zu suchen und aufzulisten. Die Dateien sind in alphabetischer Reihenfolge aufgelistet, aber ich möchte alle Dateien in einem Nummernmuster auflisten. Wenn ich „-number“ anstelle von „-name“ verwende, funktioniert es nicht.
find . -type f -name '*'
I100001093
I200001093
I300001093
XB00001093
I100001094
I200001094
I300001094
XB00001094
I100001095
I200001095
I300001095
XB00001095
kann mir bitte jemand den richtigen Befehl für die Auflistung in numerischer Reihenfolge vorschlagen.
Antwort1
Abhängig davon, wie die Teile I
usw. X
behandelt werden sollen, können Sie möglicherweise einfach den sort
folgenden Befehl verwenden:
find . -type f | sort -n
Wenn dies nicht die gewünschte Sortierreihenfolge ist, müssen Sie uns weitere Einzelheiten mitteilen (und uns im Idealfall die gewünschte Ausgabe Ihres Beispiels zeigen).
Wenn Sie die Namen am Anfang gruppieren möchten, können wir das zu sortierende Schlüsselfeld angeben. Da die Ausgabe von find mit ./{id}
den nächsten beiden Zeichen beginnt, die (scheinbar) in einem Stapel miteinander verknüpft sind, können wir mit dem Sortieren ab dem 5. Zeichen in der Zeile beginnen und den Sortierschlüssel angeben:
find . -type f | sort -n -k 1.5
-k
für sort können Sie den Schlüssel angeben, nach dem sortiert werden soll. Hier sortieren wir nach dem ersten Feld, beginnen jedoch beim 5. Zeichen und verwenden dann -n
zum numerischen Sortieren
Wenn Sie nur das aktuelle Verzeichnis möchten, können Sie -maxdepth
Folgendes verwenden:
find . -maxdepth 1 -type f | sort -n -k 1.5
wenn Sie möchten, dass es portierbar ist:
find . -path '*/*/*' -prune -o -type f | sort -n -k 1.5