Wie kann ich die 5 zuletzt geänderten Dateien in einem Verzeichnis auflisten?

137

Ich weiß, ls -tdass alle Dateien nach geänderter Zeit aufgelistet werden. Aber wie kann ich diese Ergebnisse auf die letzten n Dateien beschränken?

Ryan
quelle
10
Die umgekehrte Reihenfolge ls -lrtkönnte jemandem helfen.
PJ Brunet
Ich liebe es @PJBrunet. Ich habe mir angewöhnt, immer mit ihnen zu arbeiten, tharlda sie normalerweise alles haben, was ich brauche.
Adam Grant

Antworten:

245

Versuchen Sie es mit Kopf oder Schwanz. Wenn Sie die 5 zuletzt geänderten Dateien möchten:

ls -1t | head -5

Die -1 (das ist eine Eins) sagt eine Datei pro Zeile und der Kopf sagt, nimm die ersten 5 Einträge.

Wenn Sie die letzten 5 versuchen möchten

ls -1t | tail -5
Paul Rubel
quelle
2
Wenn ich mich nicht irre, repräsentiert die Shell die Ausgabe von lsin mehreren Spalten, aber die Ausgabe von lswird an den folgenden Befehl mit jeweils 1 Datei / Verzeichnis weitergeleitet
Alex
das scheint der Fall zu sein. Schöne Vereinfachung.
Paul Rubel
3
Dies ignoriert die Summe an der Spitze:ls -1t | head -n 6 | tail -n 5
Ryan
1
Ich sehe keine Summe, aber wenn es eine gibt, würde das sicherlich funktionieren.
Paul Rubel
17

Die akzeptierte Antwort listet nur die Dateinamen auf, aber um die Top 5 Dateien zu erhalten, kann man auch verwenden:

ls -lht | head -6

wo:

-l Ausgaben in einem Listenformat

-h macht die Ausgabe für den Menschen lesbar (dh Dateigrößen werden in KB, MB usw. angezeigt)

-t Sortiert die Ausgabe, indem die zuletzt geänderte Datei zuerst platziert wird

head -6 zeigt 5 Dateien an, weil ls die Blockgröße in der ersten Ausgabezeile gedruckt wird.

Ich denke, dies ist ein etwas eleganterer und möglicherweise nützlicherer Ansatz.

Beispielausgabe:

total 26960312 -rw-r--r--@ 1 user staff 1.2K 11 Jan 11:22 phone2.7.py -rw-r--r--@ 1 user staff 2.7M 10 Jan 15:26 03-cookies-1.pdf -rw-r--r--@ 1 user staff 9.2M 9 Jan 16:21 Wk1_sem.pdf -rw-r--r--@ 1 user staff 502K 8 Jan 10:20 lab-01.pdf -rw-rw-rw-@ 1 user staff 2.0M 5 Jan 22:06 0410-1.wmv

Samisnotinsane
quelle
12

Verwenden tailBefehl ein :

ls -t | tail -n 5
Alex
quelle
Dies ergibt die 5 ältesten. Sie müssen die Art (umkehren ls -tr) oder verwenden , headanstatt taildie neusten 5 zu erhalten.
Headbank
2

Standardmäßig wird die ls -tAusgabe vom neuesten zum ältesten sortiert. Die Kombination der zu verwendenden Befehle hängt also davon ab, in welche Richtung die Ausgabe sortiert werden soll.

Verwenden Sie für die neuesten 5 Dateien, die vom neuesten zum ältesten geordnet sind head, die ersten 5 Ausgabezeilen:

ls -t | head -n 5

Verwenden Sie für die neuesten 5 Dateien, die vom ältesten zum neuesten sortiert sind, den -rSchalter, um lsdie Sortierreihenfolge umzukehren , und verwenden Sie tail, um die letzten 5 Ausgabezeilen zu verwenden:

ls -tr | tail -n 5
Kopfbank
quelle
1

ls -tListen Sie die Dateien nach Erstellungszeit nicht zuletzt geänderter Zeit auf. Verwenden ls -ltcSie diese Option, wenn Sie Dateien nach der letzten Änderungszeit vom letzten zum ersten (von oben nach unten) auflisten möchten. Um das letzte n aufzulisten:ls -ltc | head ${n}

victrr
quelle
1
Auf welche Plattform / Version beziehen Sie sich? Können Sie einen Link bereitstellen? Ein Blick auf die Linux-Manpage ergibt das Gegenteil von dem, was Sie sagen: -t sort by modification time, newest first
Joma