Ich möchte Dateien in Unterverzeichnissen finden, die nach Zeitstempel (der Erstellung) sortiert sind, wobei der neueste zuerst angezeigt wird.
Ich habe mir die Manpage angesehen, aber es scheint, als ob Sie nur nach Zeitstempel filtern können, anstatt nach Zeitstempel zu sortieren.
An welche Optionen kann ich mich wenden find
, um dies zu erreichen? Wie kann ich es alternativ mit einem anderen Tool kombinieren sort
, um nach Zeitstempel zu sortieren?
find
nichts in einer bestimmten sortierten Reihenfolge tun, außer zwischen einer Tiefensuche und einer Breitensuche zu wählen.find
als an eine einzelne Instanz von übergeben werden könnenls
.Antworten:
Die Lösung von Paul ist im Allgemeinen in Ordnung, beinhaltet jedoch mehr E / A als nur:
quelle
find
Millionen von Dateien zurückgegeben werden? Wird sort nicht alle als eine sehr lange Liste sortieren? Wird es immer noch effizient sein? (Anstatt jedes Verzeichnis einzeln zu sortieren.)find bin/ -type f -printf '%Ts\t%p\0' | sort -nrz | cut -f2 -z | xargs -0 ls
Neue Versionen voncut
haben die Option -z, sodass Dateinamen mit Zeilenumbrüchen funktionieren.xargs -0 ls -t
Ansatz funktioniert nicht richtig, wenn es so viele Dateien gibt,xargs
diels
mehr als einmal gestartet werden müssen, aber dieser Ansatz funktioniert weiterhin.-maxdepth 1
das verwendenfind
).