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.