Wie erhalte ich Dateien, die über die Befehlszeile 'find' gefunden wurden, sortiert nach Änderungsdatum in OS X?

13

Wie schreibe ich unter Verwendung des Mac OS X-Terminals einen findBefehl, der die Ergebnisse nach Änderungsdatum sortiert (zuletzt zuerst)?

Es gibt bereits ähnliche Fragen, die sich jedoch auf GNU findund POSIX beziehen , aber ich weiß nicht, ob Mac OS X GNU oder POSIX oder etwas anderes ist.

Zadam
quelle

Antworten:

16

OS X ist vollständig POSIX- kompatibel.

So etwas sollte reichen:

find . -type f -name "*.txt" -print0 | xargs -0 ls -tl

Einige Notizen:

  • Die -tOption in lswird nach sortiert mtime.
  • xargswird verwendet, um die Dateinamen als Argument an zu übergeben ls. Beachten Sie, dass Sie -print0in findund -0in verwenden müssen, xargswenn Sie Dateien mit Leerzeichen in ihren Namen haben. Außerdem ist die maximale Anzahl von Argumenten durch die ARG_MAXVariable begrenzt . Geben Sie ein, um herauszufinden, wie viele es sind getconf ARG_MAX.
  • Sie können angeben -r, um die Sortierreihenfolge umzukehren (→ älteste Dateien zuerst)
  • Die anderen findund lsOptionen sind - wie üblich - in den Handbüchern ( man findoder man ls) beschrieben.
slhck
quelle
ls -ltrum die Reihenfolge umzukehren.
Daniel Beck
Auf diese Weise werden sie natürlich nur innerhalb von Gruppen von (etwas weniger als) ARG_MAXDateinamenzeichen sortiert .
JdeBP
Ja, danke für den Zusatz @JdeBP und Daniel. getconf ARG_MAXwird diese Nummer anzeigen.
Slhck
Ah, mein Problem ist jetzt, dass ich diesen Befehl in einem Applescript verwende und das Ergebnis zum Lesen des Inhalts dieser Datei verwendet habe. Aber jetzt enthält das Ergebnis Datumsinformationen, nicht nur den Dateinamen: do Shell-Skript "find / Users / akw / Library / Preferences / ByHost / -name" com.apple.windowserver * '-print0 | xargs -0 ls -tl | head -1 "gibt dies zurück ->" -rw ------- @ 1 akw staff 5512 Jun 19 07:52 /Users/akw/Library/Preferences/ByHost//com.apple.windowserver.1FC3A841-2C0C- 5F48-B746-1DEE064F6D12.plist "
zadam
@zadam dann ls -tanstelle von verwenden ls -tl. Das -lgibt Ihnen eine lange Liste mit den Daten. Ich wusste nicht genau, was Sie versuchten, also tut mir das leid - ich nahm an, dass Sie das auch gerne sehen würden mtime.
Slhck