Comment puis-je obtenir la taille de tous les fichiers et de tous les fichiers dans ses sous-répertoires à l'aide de la commande du.
J'essaie la commande suivante pour obtenir la taille de tous les fichiers (et des fichiers dans les sous-répertoires)
find . -type f | du -a
Mais cela imprime également la taille des dossiers. Comment puis-je obtenir une liste des tailles de tous les fichiers et fichiers dans les sous-répertoires? J'ai aussi essayé le exec flag
mais je ne sais pas comment diriger la sortie dans une autre commande après avoir exécuté les résultats de find
dans du
.
Le système d'exploitation est AIX 6.1 avec ksh Shell.
J'utilise habituellement le -exec
utilitaire. Comme ça:
find . -type f -exec du -a {} +
Je l'ai essayé à la fois sur bash et ksh avec GNU find. Je n'ai jamais essayé AIX, mais je suis sûr que votre version de find a un -exec
syntaxe.
L'extrait suivant trie la liste, la plus grande en premier:
find . -type f -exec du -a {} + | sort -n -r | less
Si vous disposez des utilitaires GNU, essayez
find . -type f -print0 | du --files0-from=-
J'utilise généralement:
find . -type f -print0 | xargs -r0 du -a
Xargs appelle généralement la commande, même si aucun argument n'est passé; xargs du </dev/null
Sera toujours appelé, xargs -r du </dev/null
N'appellera pas du. L'argument -0
Recherche des chaînes terminées par null au lieu de terminaison de nouvelle ligne.
Ensuite, j'ajoute habituellement | awk '{sum+=$1} END {print sum}'
À la fin pour obtenir le total.
Voici une version avec des noms de paramètres longs et un tri humain.
find . -type f -exec du --human {} + | sort --human --reverse | head
Je n'ai également vu aucun besoin de -a/--all
à transmettre à du
.