
Ich habe ein Verzeichnis mit Dateien namens "1", "2", ..., "9", "10", "11", ..., "20", "21", ... darin.
Kann ich sie in der Reihenfolge „1“, „2“, …, „9“, „10“, „11“, …, „20“, „21“, … auflisten?
Ich habe es versucht ls -ls
. Die Dateien werden nicht auf diese Weise aufgelistet, sondern „1“, „10“, „11“, ..., „19“, „2“, „20“, „21“, .... Ich denke, eine solche Funktion kann manchmal hilfreich sein.
Antwort1
Bei GNU ls
(wie es auf den meisten Linux-Distributionen zu finden ist) können Sie verwenden ls -v
, wobei -v
von der man
Seite
-v natural sort of (version) numbers within text
Antwort2
GNU ls -v
wurde bereits erwähnt, aber für andere Befehle zsh
können Sie, falls Ihre Shell ist, die Reihenfolge beeinflussen, in der Platzhalter mit Globbing-Qualifizierern erweitert werden.
Zum Beispiel:
printf '%s\n' *(om)
Würde die Dateien nach mÄnderungszeitpunkt sortiert auflisten (von der neuesten zur ältesten), *(Om)
oder die Sortierreihenfolge umkehren (von der ältesten zur neuesten).
*(n)
würde die Dateien numerisch sortieren. Wenn Ihr System also ls
nicht GNU ist ls
, können Sie trotzdem Folgendes tun:
ls -fdl -- *(n)
Um die Liste numerisch zu sortieren.