Algo como:
find /path/ -type f -exec stat \{} --printf="%y\n" \; |
sort -n -r |
head -n 1
Explicación:
- el comando de búsqueda imprimirá la hora de modificación para cada archivo ignorando los directorios de forma recursiva (según el comentario de IQAndreas, no puede confiar en las marcas de tiempo de las carpetas)
- ordenar -n (numéricamente) -r (inversa)
- head -n 1:obtiene la primera entrada
Si tienes una versión de find (como GNU find ) que admite -printf entonces no hay necesidad de llamar a stat repetidamente:
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
Sin embargo, si no necesita recursividad:
stat --printf="%y\n" *
Si pudiera, votaría por la respuesta de Paulo. Lo probé y entendí el concepto. Puedo confirmar que funciona. El find El comando puede generar muchos parámetros. Por ejemplo, agregue lo siguiente al --printf cláusula:
%a for attributes in the octal format
%n for the file name including a complete path
Ejemplo:
find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file
Permítanme plantear esta pregunta también:¿El autor de esta pregunta quiere resolver su problema usando Bash o PHP? Eso debe especificarse.