Wie kann ich die Ausgabe von 'ls' nach dem Datum der letzten Änderung sortieren?

Antworten:

1638
ls -t

oder (umgekehrt, zuletzt unten):

ls -tr

Die lsManpage beschreibt dies detaillierter und listet andere Optionen auf.

Adnan
quelle
312
ls -haltist für human readable, show hidden, print details, sort by date.
Evgeni Sergeev
6
Für den Fall, dass sich jemand wundert, werden sowohl die -tals auch die -rArgumente im Abschnitt über lsden POSIX-Standard angegeben . Sie sollten daher für alle Unices kompatibel sein.
Mark Amery
5
ls -lltfür das
Anzeigen von
4
Ja, es ist möglich
Ashraf.Shk786
6
@EvgeniSergeev MEMORISIEREN SIE SICH NICHT, dass ls -haltein einfacher Fehler dazu führen kann, dass Ihr Server abstürzt! linux.die.net/man/8/halt
Isaac
148

Versuchen Sie folgendes: ls -ltr. Es gibt Ihnen die letzten bis zum Ende der Liste

Rana
quelle
Ich habe dies verwendet, um die Liste der Dateien in meinem Git-Repository bis zum letzten Bearbeitungsdatum abzurufen. ls -alt $(git ls-files -m)Vielen Dank!
NobleUplift
45

Für eine vollständige Antwort verwende ich hier: ls -lrth

Fügen Sie dies in Ihr Startskript ein /etc/bashrcund weisen Sie einen Alias ​​wie diesen zu: Starten alias l='ls -lrth'Sie Ihr Terminal neu, und Sie sollten in der Lage sein, leine lange Liste von Dateien einzugeben und anzuzeigen.

Dejan
quelle
14
Sie können auch anrufen, source /etc/bashrcwenn Sie es während des Laufens zu Ihrem Repertoire hinzufügen möchten.
Cwallenpoole
1
Sie können es auch ~/.bash_aliasesnur für Ihren Benutzer hinzufügen (man kann die Datei erstellen, wenn sie noch nicht existiert
Dinei
29

Ich benutze irgendwann dieses:

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -tr

oder

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -ltr

um rekursiv zu sehen, welche Dateien in den letzten 5 Minuten geändert wurden.

... oder jetzt, mit der neusten Version von GNU find :

find . -type f -mmin -5 -exec ls -ltr {} +

... und sogar, um sich nicht auf Dateien zu beschränken :

find . -mmin -5 -exec ls -ltrd {} +

(Beachten Sie den -dSchalter, lsum den Inhalt von Verzeichnissen nicht anzuzeigen.)

Robuster Weg?

Schauen Sie sich meinen Anser an, um das geänderte Datum zu finden und zu sortieren

F. Hauri
quelle
Mit rekursiv meinen Sie, es listet alle Dateien in Unterverzeichnissen auf. Haben Sie nicht bereits einen Schalter, um dies zu tun?
Jiggunjer
@jiggunjer ls -Rltrsortiert nach Verzeichnis , dann nach Datum. Es find -type f -mmin -5 -exec ls -ltr {} +werden nur die Dateien gedruckt, die in den letzten 5 Minuten geändert wurden, sortiert nach Datum, unabhängig vom Verzeichnisbaum!
F. Hauri
Beachten Sie, dass dies nicht funktioniert, wenn die Liste der Dateien zu lang ist, um als ein Shell-Aufruf an ls( unix.stackexchange.com/a/118200/27186 ) übergeben zu werden - dann sehen Sie eine sortierte Gruppe von Dateien, dann eine andere Mehrere Dateien usw. sortiert, aber die gesamte Liste wird nicht sortiert. Unter superuser.com/questions/294161/… finden Sie Informationen zum Sortieren längerer Listen mit find.
Unhammer
@unhammer Sie haben Recht, damit dies sicher funktioniert. Sehen Sie sich meinen aktuellen Anser an, um Unix / Linux zu finden und nach geändertem Datum zu sortieren
F. Hauri
20

Hinzufügen:

alias lt='ls -Alhtr'

im $homedir/.bashrc

Layer8
quelle
15

Gedächtnisstütze

Ignorieren Sie keine Einträge, die mit .und nach Datum beginnen (neueste zuerst):

ls -at

Ignorieren Sie keine Einträge, die mit beginnen, .und kehren Sie die Sortierung nach Datum (älteste zuerst) um:

ls -art

Um Einträge nicht zu ignorieren, die mit beginnen ., verwenden Sie ein langes Listenformat und sortieren Sie nach Datum (neueste zuerst):

ls -alt

Ignorieren Sie für lesbare Druckformate nicht die Einträge, die mit beginnen ., verwenden Sie ein langes Listenformat und sortieren Sie nach Datum (neueste zuerst) (@EvgeniSergeev-Hinweis):

ls -halt

aber sei vorsichtig mit dem letzten , denn ein einfacher Fehler kann einen Serverabsturz verursachen ... (@Isaac note)

simhumileco
quelle
14

Finden Sie alle Dateien im Dateisystem, die vor maximal 3 * 24 Stunden (3 Tagen) bis jetzt geändert wurden:

find / -ctime 3
pbies
quelle
10

Um die letzten 10 nach Datum sortiert anzuzeigen, verwende ich etwa Folgendes:

ls -t ~/Downloads | head -10

oder am ältesten zu zeigen

ls -tr ~/Downloads | tail -10
lfender6445
quelle
Es gibt ls -t head -2und ls -tr | tail -2gibt das gleiche Ergebnis, Option (-t / -tr) sollte festgehalten werden und der Schwanz / Kopf oder umgekehrt modifiziert werden. Beides zu modifizieren ist wie nichts zu modifizieren
DDS
7

Verwenden Sie nur sehr einfache Unix-Befehle:

ls -nl | sort -k 8,8n -k 6,6M

Dies funktionierte unter Linux. Spalte 8 ist "n" (numerisch), Spalte 6 ist "M", Monat.

Ich bin neu in sort, daher könnte diese Antwort wahrscheinlich verbessert werden. Ganz zu schweigen davon , braucht es zusätzliche Optionen lsund sortgenaue Zeitstempel zu verwenden, aber nicht jeder wird diese brauchen.

Barker
quelle
5
Ich vermute, Ihre Antwort hat keine Gegenstimmen erhalten, da sie die Ausgabe von ls analysiert - siehe das kanonische Argument dagegen und diese Frage, ob ls nicht analysiert wird
namensgebend