Etwas wie:
find /path/ -type f -exec stat \{} --printf="%y\n" \; |
sort -n -r |
head -n 1
Erklärung:
- Der Find-Befehl gibt die Änderungszeit für jede Datei aus und ignoriert rekursiv Verzeichnisse (laut dem Kommentar von IQAndreas können Sie sich nicht auf die Zeitstempel der Ordner verlassen)
- sort -n (numerisch) -r (umgekehrt)
- head -n 1:Holt den ersten Eintrag
Wenn Sie eine Version von find
haben (wie GNU find
), die -printf
unterstützt dann braucht stat
nicht aufgerufen zu werden wiederholt:
find /some/dir -printf "%T+\n" | sort -nr | head -n 1
oder
find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1
Wenn Sie jedoch keine Rekursion benötigen:
stat --printf="%y\n" *
Wenn ich könnte, würde ich für die Antwort von Paulo stimmen. Ich habe es getestet und das Konzept verstanden. Ich kann bestätigen, dass es funktioniert. Der find
Der Befehl kann viele Parameter ausgeben. Fügen Sie zum Beispiel Folgendes zu --printf
hinzu Klausel:
%a for attributes in the octal format
%n for the file name including a complete path
Beispiel:
find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file
Lassen Sie mich auch diese Frage aufwerfen:Will der Autor dieser Frage sein Problem mit Bash oder PHP lösen? Das sollte angegeben werden.