Quelque chose comme :
find /path/ -type f -exec stat \{} --printf="%y\n" \; |
sort -n -r |
head -n 1
Explication :
- la commande find imprimera l'heure de modification pour chaque fichier en ignorant les répertoires de manière récursive (selon le commentaire d'IQAndreas, vous ne pouvez pas vous fier aux horodatages des dossiers)
- trier -n (numériquement) -r (inverser)
- head -n 1 :obtenir la première entrée
Si vous avez une version de find
(comme GNU find
) qui prend en charge -printf
alors inutile d'appeler le stat
à plusieurs reprises :
find /some/dir -printf "%T+\n" | sort -nr | head -n 1
ou
find /some/dir -printf "%TY-%Tm-%Td %TT\n" | sort -nr | head -n 1
Si vous n'avez pas besoin de récursivité, cependant :
stat --printf="%y\n" *
Si je pouvais, je voterais pour la réponse de Paulo. Je l'ai testé et j'ai compris le concept. Je peux confirmer que cela fonctionne. Le find
La commande peut générer de nombreux paramètres.Par exemple, ajoutez ce qui suit au --printf
clause :
%a for attributes in the octal format
%n for the file name including a complete path
Exemple :
find Desktop/ -exec stat \{} --printf="%y %n\n" \; | sort -n -r | head -1
2011-02-14 22:57:39.000000000 +0100 Desktop/new file
Permettez-moi également de soulever cette question :l'auteur de cette question souhaite-t-il résoudre son problème en utilisant Bash ou PHP ? Cela devrait être précisé.