Répertorie les tailles du dossier de dossiers actuel avec le terminal?

134

Je veux une liste des dossiers du répertoire actuel ou ceux que je spécifie avec leur taille.

J'ai essayé avec du mais je ne connais que la taille des répertoires spécifiés (du. ./F1), et ls ne montre pas la taille des dossiers.

Comment est-ce que je fais ceci sans n'importe quel script?

Kevin
la source
pas sonner comme un abruti, mais 'homme du';)
Jakub
5
Merci ;-) mais j'ai déjà essayé et je n'ai rien trouvé. Et essayez Googling du!
kevin

Réponses:

212

Si vous souhaitez afficher tous les répertoires du répertoire actuel:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Pour les montrer à partir d'un autre répertoire:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Si vous voulez vous assurer que les répertoires dont le nom commence par un point sont inclus, commencez par le faire shopt -s dotglob.

Dennis Williamson
la source
Merci à toutes les bonnes réponses, mais celui-ci est le plus simple. J'ai oublié la fin / dans mes tests.
kevin
1
Où -s signifie résume, affiche le total et -h signifie lisible par l'homme
wranvaud
2
Pour trier les dossiers par taille: du -s */ | sort -n.
Anton Tarasenko
1
@AntonTarasenko: Trier les tailles lisibles par l'homme
Dennis Williamson
1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson
18

Sur un Mac, l'option --max-depth est remplacée par -d [profondeur]. Donc, pour voir une liste lisible par l'homme de votre lecteur racine plus 2 niveaux profonds, utilisez ce qui suit:

du -hd 2 /* 

Remarque: cette commande exposera les deux niveaux de répertoire supérieurs de votre racine. Cela inclut la traversée d’un niveau dans vos volumes et la liste des tailles récapitulatives de chaque répertoire de niveau supérieur de chacun des volumes attachés. Selon ce que vous avez attaché, cette commande peut prendre un certain temps.

jadik
la source
13

Une autre approche est l’option --max-depth.

du -h --max-depth=1 .

Dresse la liste de tous les répertoires et fichiers du dossier actuel avec la taille.

Profondeur 2 listerait un niveau supplémentaire de dossiers.

matthias krull
la source
4
Sur Mac, c'est du -hd 2 .pour 2 niveaux de profondeur.
Ryan
Ah oui. Et probablement sur FreeBSD également. Merci pour l'info.
Matthias Krull
5

Essayer:

$ du -s ./f1

ou

$ du -sh ./f1

pour des tailles lisibles plus conviviales.

Doug Harris
la source
2

$ du --max-depth=1 /var/www/ | sort -n -r

Andre Mesquita
la source
3
Lorsque vous ajoutez une réponse à une question plus ancienne avec des réponses existantes, il est judicieux d'expliquer en quoi votre réponse est différente et d'inclure une explication de sorte qu'il ne s'agisse pas d'une réponse à commande unique.
Jason Aller
3
Pouvez-vous développer votre réponse pour expliquer ce que font les paramètres?
fixer1234
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é.

Rayon
la source
2

En s'appuyant sur la réponse acceptée, cette commande vous montrera la taille des dossiers du répertoire et les listera également par taille afin de faciliter leur interprétation:

$ du -sh */ | sort -rn
Ethan
la source
1

Sur Mac, vous pouvez installer la mise en oeuvre GNU (Linux) de duHomebrew ( brew install coreutils). Alors par exemple:

gdu folder -shL --exclude=.git

  • gduest le nom donné à l'implémentation GNU de du(par défaut, Homebrew ne cache pas /usr/bin/du);
  • s produit un total général pour le dossier spécifié (omettez-le si vous voulez voir le détail);
  • h génère des tailles lisibles par l'homme;
  • L suit les liens symboliques;
  • --exclude=.git exclut le répertoire git dans le dossier spécifié (ceci est juste un exemple).

Vous pouvez ignorer plus de dossiers en ajoutant --exclude=blah. Vous pouvez également spécifier plusieurs dossiers à la fois (c'est-à-dire gdu folder1 folder2 ...) et, dans ce cas, vous pouvez combiner tous les sous-totaux en une seule taille à l'aide d'option c.

Sheljohn
la source
1

Voici un script POSIX qui fonctionnera avec:

  • Un fichier
  • Des dossiers
  • Un annuaire
  • Répertoires
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

La source

Steven Penny
la source