Listen Sie die Dateien nach dem Datum der letzten Bearbeitung auf


104

Ich habe ein Verzeichnis: /home/user/

Wie kann ich jede Datei in diesem Verzeichnis (einschließlich der Dateien in Unterverzeichnissen) auflisten und nach dem Datum sortieren, an dem sie zuletzt geändert wurden?

Antworten:


171

Sie können verwenden:

ls -Rt

Dabei -Rbedeutet rekursiv (einschließlich Unterverzeichnisse) und -tbedeutet "Sortieren nach dem Datum der letzten Änderung".


Verwenden Sie Folgendes, um eine Liste der nach Änderungsdatum sortierten Dateien anzuzeigen:

ls -l -Rt

Dazu kann auch ein Alias ​​erstellt werden:

alias lt='ls -lht'
lt

Wo -hgibt eine besser lesbare Ausgabe.


16
Danke, das ist perfekt. Ich habe dort auch ein -l hinzugefügt, damit ich die Daten tatsächlich sehen kann. Für jeden, der dies später sucht, ist es - $ ls -lRt
— Marty

4
Wenn Sie dies an der Eingabeaufforderung tun und die zuletzt geänderten Dateien anzeigen möchten, ziehen Sie dies in Betracht ls -lrt[RhA]. das -rkehrt die Sortierreihenfolge um und lässt kürzlich bearbeitete Sachen am Ende der Liste ...
— dmckee --- Ex-Moderator Kätzchen

Dies fügt -ilaIhnen so ziemlich alle Informationen hinzu, die Sie benötigen würden. $ ls -ilaRt
— Falkenfighter

Ich habe diese Antwort erweitert, da die Verwendung ll -Rtdie perfekte Lösung für mich war, da ich die Dateien nach dem Datum der letzten Änderung anzeigen musste. Dies kann für andere hilfreich sein.
— Mus

@MusTheDataGuy llist nicht vorhanden und kein Befehl. Es ist meistens ein Alias ​​in der Bash-Shell, aber in den meisten / einigen /? Nicht definiert. Linux-Distributionen. Einige definieren es als alias ll='ls -l'in /etc/bash.bashrc oder /etc/.bashrc. Daher funktioniert es möglicherweise nicht und ist auf dem OP-System möglicherweise nicht vorhanden. Verwenden Sie ls -l -Rtmindestens lseinen Standardbefehl, wie er von posix definiert wird. Oder geben Sie an, was Sie gemeint haben alias ll='ls -l'; ll -Rt.
— KamilCuk

73

Wenn Sie eine Hauptliste wünschen, in der alle Dateien nach Änderungsdatum sortiert sind und das Verzeichnis anzeigen, in dem sie sich befinden, aber nicht nach Verzeichnis gruppiert sind , können Sie Folgendes verwenden:

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

Das Ergebnis sieht sehr ähnlich aus ls -l:

-rw-r - r-- 1 root root 3892 08/11/2009 11:03:36 /usr/share/man/man1/xmllint.1.gz
-rw-r - r-- 1 root root 22946 13.08.2009 11:59:20 /usr/share/man/man1/curl.1.gz
-rw-r - r-- 1 root root 728 17.08.2009 12:06:33 /usr/share/man/man1/thunderbird.1.gz
-rw-r - r-- 1 root root 873 18.08.2009 10:52:47 /usr/share/man/man1/libgnutls-config.1.gz
-rw-r - r-- 1 root root 2552 19.08.2009 02:00:34 /usr/share/man/man3/Purple.3pm.gz
-rw-r - r-- 1 root root 9546 19.08.2009 02:02:00 /usr/share/man/man1/pidgin.1.gz
-rw-r - r-- 1 root root 2201 19.08.2009 02:02:46 /usr/share/man/man3/Pidgin.3pm.gz
-rw-r - r-- 1 root root 926 19.08.2009 02:03:05 /usr/share/man/man1/purple-remote.1.gz
-rw-r - r-- 1 root root 18052 19.08.2009 04:11:47 /usr/share/man/man1/mono.1.gz
-rw-r - r-- 1 root root 1845 19.08.2009 04:11:47 /usr/share/man/man5/mono-config.5.gz

Mac OS X

Für diejenigen unter Ihnen, die Mac OS X verwenden, ist die Option -printf in BSD find nicht verfügbar (Sie erhalten diesen Fehler :)find: -printf: unknown primary or operator . Glücklicherweise können Sie GNU find über Homebrew installieren (es sollte auch eine Option für Fink und Macports geben ):

brew install findutils

Nach der Installation sollte Ihnen der GNU-Fund als zur Verfügung stehen gfind. Alles, was Sie tun müssen, ist die obige Zeile zu ändern in:

gfind . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' '

3
Schön. Die ganze Sache mit der Verzeichnisgruppierung mit ls -R ist nervig.
— El Yobo

1
Toller Code, das Skript hat ca. 5 Sekunden zum Sortieren und Ausdrucken von 13.000 Fotos in vielen verschiedenen Ordnern (über Cygwin auf einem recht langsamen Computer).
— Magnus

Oh, das ist großartig. Für Leute (wie mich), die nicht so vertraut sind findwie der Autor, sind diese Argumente -printfFormatanweisungen, die in gefunden werden können man find(Suche nach der fünften Instanz printfauf dieser Seite).
— Owen Blacker

4
Für alle, die dies unter MacOS verwenden möchten, sich aber nicht die Mühe machen möchten, Findutils zu installieren: find . -type f -print0 | xargs -0 stat -f "%m %Sp %l %-8Su %-8Sg %8z %Sm %N" | sort | cut -f 2- -d' 'Sie erhalten unter MacOS ungefähr die gleiche Ausgabe , wenn Sie nur integrierte Dienstprogramme verwenden
— Jaymon,

sort -rum die Sortierung umzukehren und die zuletzt geänderten Dateien oben zu haben.
— Maryisdead

0

MAC OSX 2019

Wenn Sie sich nicht darum kümmern, wann es erstellt wurde, aber Ihre Liste sortiert werden soll, verwenden Sie diesen Befehl

==> ls -t

Wenn Sie Datum und Benutzerinformationen bestellen und anzeigen möchten, verwenden Sie diesen Befehl

===> ls -lt


0

Für zshBenutzer können Sie auch Glob-Qualifizierer verwenden (ebenfalls dokumentiert am man zshexpn):

echo *(om)

Wo osteht für Sortierreihenfolge, oben und msteht für die letzte Änderungszeit .

Dies kann nützlich sein, wenn es in einer for-Schleife oder einem anderen Befehl verwendet wird:

for file in *(^om); do
  [ -e "$file" ] || continue
  # do something with file orderer from least recently modified to last modified
done

Oder mit einem anderen Glob-Qualifier verkettet:

last_modified_file=(*(om[1]))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.