
Ich muss eine Dateiliste erstellen, die die Dateinamen in aufsteigender Reihenfolge anzeigt. Mein Dateiname hat das Dateimuster: FILE.YYYYMMDD.XXX
Zum Beispiel:
$ ls -ltr
-rwxr-xr-x. 1 honle 1036 Apr 14 2020 FILE.20200102.001
-rwxr-xr-x. 1 honle 426832 Apr 14 2020 FILE.20200102.002
-rwxr-xr-x. 1 honle 426832 Apr 14 2020 FILE.20200102.003
-rwxr-xr-x. 1 honle 426832 Apr 10 2020 FILE.20200110.001
-rw-r--r--. 1 honle 426832 Apr 14 22:50 FILE.20200220.001
-rwxr-xr-x. 1 honle 1036 Apr 15 16:30 FILE.20200110.001
Zur Eingabe notiert, warum FILE.20200120.002 vor FILE.20200220.001 steht. FILE.20200120.002 wurde verarbeitet und gelangte vor FILE.20200220.001 in das aktuelle Verzeichnis. Deshalb muss ich es nach dem Dateinamenmuster JJJJMMTT.XXX sortieren.
Gewünschte Ausgabe:
FILE.20200102.001
FILE.20200102.002
FILE.20200102.003
FILE.20200110.001
FILE.20200120.002
FILE.20200220.001
Die Zeit, zu der die Datei erstellt wurde, ist nicht in der richtigen Reihenfolge, daher kann ich ls -ltr nicht verwenden. Irgendeine Idee, wie ich sie sortieren kann? Ich verwende Linux.
Danke
Antwort1
Wenn das Problem darin besteht, die Dateinamen in einer einzelnen Spalte statt im dadurch erzeugten mehrspaltigen Format zu erhalten ls
, können Sie die -1
Option („minus eins“) verwenden, um Folgendes zu erreichen ls
:
ls -1
Die Dateinamen würden nach Namen sortiert.
printf '%s\n' FILE.*
Vorausgesetzt, dass das Muster nur FILE.*
mit allen relevanten Dateinamen übereinstimmt, würde der obige Befehl die Dateinamen auch in lexikografischer Reihenfolge ausgeben, jeweils in einer eigenen Zeile, was anscheinend Ihr Wunsch ist.