Wie liste ich alle Dateien in einem Verzeichnis rekursiv auf und sortiere die Ausgabe nach Änderungszeit?
Normalerweise verwende ich, ls -lhtc
aber es werden nicht alle Dateien rekursiv gefunden. Ich benutze Linux und Mac.
ls -l
unter Mac OS X kann geben
-rw-r--r-- 1 fsr user 1928 Mar 1 2011 foo.c
-rwx------ 1 fsr user 3509 Feb 25 14:34 bar.c
Wenn der Datumsteil nicht konsistent oder ausgerichtet ist, muss eine Lösung dies berücksichtigen.
Teillösung
stat -f "%m%t%Sm %N" ./* | sort -rn | head -3 | cut -f2-
funktioniert, aber nicht rekursiv.
Antworten:
Hier ist eine Methode, die
stat
wie von @ johnshen64 vorgeschlagen verwendet wirdquelle
find "$PWD" -type f -exec stat -f $'%m\t%N' '{}' \; | sort -rn | cut -f2-
würde nur die absoluten Pfade der Dateien unter OS Xstat
Sie? Ihr Format oben hat bei mir nicht funktioniert. Ich musste folgendes verwenden :find . -type f -exec stat --printf "%Y\t%y %N\n" '{}' \; | sort -rn | cut -f2-
. Dies ist mitstat (GNU coreutils) 8.23
Verwenden Sie
find
's-printf
und sortieren Sie nach einem angemessenen Datumsformat:Dies sollte Prozessgabeln minimieren und somit am schnellsten sein.
Beispiele, wenn Ihnen der zweite Teil nicht gefällt (der im Dateisystem oft ohnehin nicht implementiert ist):
EDIT: Standard
find
auf Mac hat nicht-printf
. Es ist jedoch nicht schwierig, GNU find auf einem Mac zu installieren (siehe auch diesen Link für weitere Einschränkungen bezüglich der Mac / Linux-Kompatibilität undxargs
).quelle
find .
sollte in der Lage sein, alle Dateien zu erhalten. Etwas wie das:Sie müssen es auf Ihre Bedürfnisse abstimmen.
quelle
ls
Linux können Sie mit einer--time-format
Option sicherstellen, dass sowohl aktuelle als auch ältere Dateidaten im selben Format angezeigt werden.Diese Antwort auf eine ähnliche Frage auf der Unix Stack Exchange-Site hat mir geholfen, weil ich zsh verwendet habe:
So listen Sie Dateien rekursiv nach Änderungsdatum sortiert auf (kein stat-Befehl verfügbar!)
quelle