Afficher la taille de chaque sous-répertoire dans un format de liste à l'aide de la commande d'une ligne dans Bash?


101

Je veux obtenir une liste des répertoires et leurs tailles dans un format de liste comme comment vous obtenez lorsque vous faites un ls -l.

La chose est-ce qu'il y a une commande d'une ligne qui peut faire ceci? Je vois que les autres ont de longues commandes juste pour sortir ceci. C'est trop long.

Quelle commande peut faire cela ou une combinaison de commandes faciles à saisir? du -hle donne, mais il affiche tous les sous-dossiers, ce qui n’est pas ce que je veux. juste les dossiers de répertoires actuels.

Réponses:


72

Vous voulez probablement voir les répertoires classés par taille:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp

Cela ne fonctionne pas s'il y a un grand nombre d'entrées dans le répertoire. bash: /run/current-system/sw/bin/du: Argument list too long
Chris Stryczynski le

123

Essaye ça

du -h --max-depth=1

Sortie

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

Alternative

Si --max-depth=1c'est un peu long à votre goût, vous pouvez aussi essayer d'utiliser:

du -h -s *

Ceci utilise -s( --summarize) et n'imprimera que la taille du dossier lui-même par défaut. En transmettant tous les éléments du répertoire de travail actuel ( *), le résultat obtenu est similaire à celui qui --max-depth=1suit:

Sortie

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

La différence est subtile. L'ancienne approche affichera la taille totale du répertoire de travail actuel et la taille totale de tous les dossiers qu'il contient ... mais seulement jusqu'à une profondeur de 1.

Cette dernière approche calculera la taille totale de tous les éléments transmis individuellement . Ainsi, il inclut le lien symbolique lib64dans la sortie, mais exclut les éléments cachés (dont le nom commence par un point). Il manque également la taille totale du répertoire de travail actuel, car cela n’a pas été passé comme argument.


4
Réponse parfaite. Sous Mac OSX, le --depthparamètre n'est pas reconnu. Utilisez du -h -d 1pour le même résultat.
Dylan


2

Il convient de mentionner la commande shell NCurses Disk Usage .

Ncdu est un analyseur d'utilisation du disque avec une interface ncurses. Il est conçu pour rechercher des ressources d'espace sur un serveur distant sur lequel aucune configuration graphique n'est disponible, mais c'est un outil utile même sur des systèmes de bureau classiques. Ncdu se veut rapide, simple et facile à utiliser, et devrait pouvoir fonctionner dans n’importe quel environnement minimal semblable à POSIX où ncurses est installé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.