124 votes

Bash: Comment puis-je afficher la taille de chaque fichier et chaque répertoire (de manière récursive) et les trier par taille decendingly?

J'ai trouvé qu'il n'est pas facile à obtenir de façon de la taille d'un répertoire en Bash?

Je veux que quand je tape ls -,

il peut liste de tous à la somme de la taille du fichier de répertoire de façon récursive et fichiers en même temps et de les trier par ordre de taille.

Est-ce possible?

242voto

Developer Points 3081

Il suffit de naviguer jusqu'au répertoire et exécuter la commande suivante:

du -a --max-depth=1 | sort -n

OU ajoutez -h pour les, lisible par les tailles et -r pour imprimer plus gros répertoires/fichiers.

du -a -h --max-depth=1 | sort -hr

24voto

sehe Points 123151
du -s * | sort -n

(ce willnot montrer cachés (.fichiers de configuration utilisateur) des fichiers)

Utiliser du -sm de Mo unités etc. Je l'utilise toujours

du -smc * | sort -n

parce que la ligne de total (-c) prendra fin au bas pour des raisons évidentes :)

PS:

  • Voir les commentaires pour la manipulation des fichiers de configuration utilisateur
  • J'ai souvent utiliser par exemple 'du-smc /home// | sort-n |tail" pour avoir une idée de exactement où les gros morceaux sont assis

18voto

moose Points 4945

Commande

du -h --max-depth=0 * | sort -hr

Sortie

3,5M    asdf.6000.gz
3,4M    asdf.4000.gz
3,2M    asdf.2000.gz
2,5M    xyz.PT.gz
136K    xyz.6000.gz
116K    xyz.6000p.gz
88K test.4000.gz
76K test.4000p.gz
44K test.2000.gz
8,0K    desc.common.tcl
8,0K    wer.2000p.gz
8,0K    wer.2000.gz
4,0K    ttree.3

Explication

  • du affiche "l'utilisation du disque"
  • h "lisible" (à la fois dans le tri et du)
  • max-depth=0 moyen du ne sera pas afficher les tailles de sous-dossiers (supprimer si vous voulez montrer à toutes les tailles de tous les fichiers de tous les sous-, subsub-, ..., dossier)
  • r "à l'envers" (le plus grand fichier en premier)

6voto

Thanatos Points 13444

ls -S trie par taille. Puis, pour montrer la taille de trop, ls -lS donne une longue (-l), triées par taille (-S) à l'écran. J'ai l'habitude d'ajouter -h aussi, pour rendre les choses plus facile à lire, donc, ls -lhS.

0voto

dvorak Points 71

Je pense avoir compris ce que vous voulez faire. Cela vous donnera une liste triée de tous les fichiers et tous les répertoires, triés par taille de fichier et la taille du contenu des répertoires.

(find . -depth 1 -type f -exec ls -s {} \;; find . -depth 1 -type d -exec du -s {} \;) | sort -n

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X