Qualcosa come:
find /path/ -type f -exec stat \{} --printf="%y\n" \; |
sort -n -r |
head -n 1
Spiegazione:
- il comando find stamperà l'ora di modifica per ogni file ignorando ricorsivamente le directory (secondo il commento di IQAndreas non puoi fare affidamento sui timestamp delle cartelle)
- ordina -n (numericamente) -r (inverso)
- head -n 1:ottiene la prima voce
Se hai una versione di find
(come GNU find
) che supporta -printf
allora non c'è bisogno di chiamare stat
ripetutamente:
find /some/dir -printf "%T+\n" | sort -nr | head -n 1
o
find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1
Se non hai bisogno di ricorsione, però:
stat --printf="%y\n" *
Se potessi, voterei per la risposta di Paulo. L'ho provato e ho capito il concetto. Posso confermare che funziona.Il find
Il comando può restituire molti parametri. Ad esempio, aggiungi quanto segue a --printf
clausola:
%a for attributes in the octal format
%n for the file name including a complete path
Esempio:
find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file
Consentitemi di sollevare anche questa domanda:l'autore di questa domanda vuole risolvere il suo problema utilizzando Bash o PHP? Dovrebbe essere specificato.