Erstellen Sie eine Dateiliste in aufsteigender Reihenfolge basierend auf dem Dateinamen

Erstellen Sie eine Dateiliste in aufsteigender Reihenfolge basierend auf dem Dateinamen

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.

verwandte Informationen