83 votes

La commande du n'analyse pas les répertoires cachés

Je veux estimer la quantité d'espace disque utilisée par un répertoire en utilisant la commande suivante.

du -sh dir_name

qui ne calcule pas les répertoires cachés. Dans la page de manuel de du, il n'y a aucune information à ce sujet. Comment calculer la quantité d'espace disque utilisée par les répertoires incluant les fichiers cachés.

188voto

ecerutti Points 1980

Cette commande vous montre la taille résumée des répertoires cachés en utilisant une expression régulière :

du -hs .[^.]*

45voto

La commande correcte est : du -hs $(ls -A)

$ du -hs $(ls -A)
0   test
0   .test

du -hs .* * comme mentionné dans une autre réponse, n'est pas correct si vous voulez lister tous les fichiers et sous-répertoires (y compris les fichiers cachés).

Exemple :

$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K    .
1,8G    ..

Pourquoi est-ce que du se comporter comme ça ? Parce que vous utilisez -s qui résument le résultat et que tous les fichiers et sous-répertoires sont enfants de . donc du -hs ne les répertorie pas !

30voto

theKing Points 320

En fait, c'est le cas, voici la preuve :

mkdir .test
echo "hi" > .test/appo
du -a
4       ./.test/appo
8       ./.test
12      .

El -a L'option est utilisée pour montrer explicitement quels fichiers ont été comptés.

Utilisez-vous du * ?

15voto

ADNow Points 99

Pour info, pour estimer la taille occupée par les différents répertoires, il vaut mieux utiliser ncdu

Vous pouvez naviguer dans le GUI ncurses entre différents répertoires et il affichera la taille de chaque répertoire. Si j'utilise du, je devrais exécuter la commande du pour chaque répertoire que je veux vérifier, ce qui peut être fastidieux. Vous pouvez également trier les répertoires en fonction de la taille occupée dans l'interface graphique ncurses.

7voto

bonyiii Points 171

C'est vrai et ce n'est pas vrai. Exemple :

Dans le répertoire personnel : (un seul utilisateur existe)

du -sh /home/*
2.6G    /home/user

dans le répertoire utilisateur : (grande différence entre les sommes)

du -sh *
61M     bin
2.0M    dump-20130124104823.tar.gz
651M    public_html
472K    twitter-2.0.0.gem
11M     wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

et la raison en est :

du -sh /home/user/.rvm/
1.9G    /home/user/.rvm/

du calculera les répertoires cachés en descendant dans les sous-répertoires, mais dans le répertoire courant, le * ne correspond pas au motif .directory_name, donc les éléments cachés du répertoire courant seront omis.

Cela m'a pris un certain temps pour le comprendre, et comme le recommande shadyabhi, cela aurait été évident si j'avais utilisé ncdu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X