Comment récursive des fichiers de la liste avec la taille et l'heure de dernière modification?
Donné un répertoire que je suis à la recherche d'un bash one-liner pour obtenir un appel récursif à la liste de tous les fichiers avec leur taille et de l'heure de modification de l'onglet séparé pour faciliter l'analyse. Quelque chose comme:
cows/betsy 145700 2011-03-02 08:27
horses/silver 109895 2011-06-04 17:43
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
stat(1)
pour obtenir les informations que vous voulez, si vous ne voulez pas le pleinls -l
de sortie, et vous pouvez les utiliserfind(1)
pour obtenir un appel récursif à la liste des répertoires. En les combinant dans une seule ligne, vous pourriez faire ceci:Si vous voulez rendre la sortie plus parseable, vous pouvez utiliser
%m
au lieu de%Sm
pour obtenir l'heure de dernière modification comme untime_t
au lieu de lisible par l'homme date.trouver est parfait pour la recherche dans les répertoires de manière récursive. Le
-ls
action indique à la sortie de ses résultats dansls -l
format:Sur les machines Linux, vous pouvez imprimer à personnaliser la sortie à l'aide de la
-printf
action:Voir
man find
pour plus de détails sur les spécificateurs de format disponible avec-printf
. (Ce n'est pas compatible POSIX et peuvent ne pas être disponibles sur d'autres systèmes d'exploitation UNIX.)-printf
primaire n'est pas POSIX; certainsfind
implémentations (en particulier, celle de Mac OS X) ne pas l'inclure.find * -type f -printf '%p\t%s\t%TY-%Tm-%Td %Tk:%TM\n'
Si vous préférez fixe la largeur des champs plutôt que des onglets, vous pouvez faire des choses comme changer
%s
à%10s
.J'ai utilisé
find * ...
pour éviter la tête "./" sur chaque nom de fichier. Si vous n'avez pas l'esprit que, l'utilisation.
plutôt que*
, qui montre aussi les fichiers dont les noms commencent par.
). Vous pouvez également rediriger la sortie à traverssed 's/^\.\///'
.Noter que la sortie de la commande sera arbitraire. Pipe à travers
sort
si vous voulez un ordre d'inscription.-printf
primaire n'est pas POSIX; certainsfind
implémentations (en particulier, celle de Mac OS X) ne pas l'inclure.Vous pouvez essayer ce pour récursive de liste à partir du dossier courant appelé "/from_dir"
Listes des fichiers et des répertoires passe par la commande stat et met toutes les infos dans un fichier appelé permissions_list.txt
“%s|%A|%a|%U|%G” vous donnera le résultat suivant dans le fichier:
Cheers!