Comment répertorier tous les fichiers d'un répertoire de manière récursive et trier la sortie par heure de modification?
J'utilise normalement ls -lhtc
mais il ne trouve pas tous les fichiers récursivement. J'utilise Linux et Mac.
ls -l
sur Mac OS X peut donner
-rw-r--r-- 1 fsr user 1928 Mar 1 2011 foo.c
-rwx------ 1 fsr user 3509 Feb 25 14:34 bar.c
où la partie date n'est pas cohérente ou alignée, donc une solution doit en tenir compte.
Solution partielle
stat -f "%m%t%Sm %N" ./* | sort -rn | head -3 | cut -f2-
fonctionne, mais pas récursivement.
Réponses:
Voici une méthode utilisant
stat
as @ johnshen64 suggéréela source
find "$PWD" -type f -exec stat -f $'%m\t%N' '{}' \; | sort -rn | cut -f2-
imprimerait uniquement les chemins absolus des fichiers sur OS X.stat
utilisez-vous? votre format ci-dessus ne fonctionnait pas pour moi. Je devais utiliser ce qui suit:find . -type f -exec stat --printf "%Y\t%y %N\n" '{}' \; | sort -rn | cut -f2-
. C'est avecstat (GNU coreutils) 8.23
Utilisez
find
l »-printf
et trier sur un format de date raisonnable:Cela devrait minimiser les fourches de processus et donc être le plus rapide.
Exemples si vous n'aimez pas la seconde partie fractionnaire (qui n'est souvent pas implémentée dans le système de fichiers de toute façon):
EDIT: Standard
find
sur Mac n'a pas-printf
. Mais il n'est pas difficile d' installer GNU find sur Mac (voir également ce lien pour plus de mises en garde concernant la compatibilité Mac / Linux etxargs
).la source
find .
devrait être en mesure d'obtenir tous les fichiers. Quelque chose comme ça:Vous devez l'adapter à vos besoins.
la source
ls
sous Linux,--time-format
vous pouvez utiliser une option pour vous assurer que les dates de fichier récentes et anciennes sont affichées dans le même format.Cette réponse à une question similaire sur le site Unix Stack Exchange m'a aidé car j'utilisais zsh:
Comment lister les fichiers triés par date de modification de manière récursive (pas de commande stat disponible!)
la source