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?


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.


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: 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.


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.


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.


2

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


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é.


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

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.


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

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.