Ich versuche, eine Reihe von Dateien mit dem Befehl ls numerisch zu sortieren, die entweder ABCDE1234A1789.RST.txt
oder ABCDE12345A1789.RST.txt
durch das Feld '789
' entsprechen.Verwenden Sie den Befehl bash sort in Dateinamen mit variabler Länge
In den obigen Beispielmustern ist ABCDE
für alle Dateien gleich, 1234
oder 12345
sind Ziffern, die variieren, aber immer 4 oder 5 Ziffern lang sind. A1
ist die gleiche Länge für alle Dateien, aber der Wert kann variieren, so dass es leider nicht als Trennzeichen verwendet werden kann. Alles nach dem ersten .
ist für alle Dateien gleich. Etwas wie:
ls -l *.RST.txt | sort -k +9.13 | awk '{print $9} ' > file-list.txt
werden die kürzeren Dateinamen übereinstimmen, aber nicht die längeren wegen der variablen Länge von Zeichen vor dem Feld Ich möchte sortiert werden soll.
Gibt es eine Möglichkeit, alle Dateien zu sortieren, ohne zuerst die Dateien mit kürzerer Länge aufzufüllen, um sie alle gleich lang zu machen?
FYI - der 'sort' Befehl ist nicht Teil von bash, sondern ein Standard-UNIX-Dienstprogramm. Als solches ist es für jedes Programm (und jede Shell) verfügbar. –