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.

6voto

luochen1990 Points 161
du -ahd1 | sort -hr | head -10

Voici la description de -d option dans du --help :

-d, --max-depth=N imprime le total pour un répertoire (ou fichier, avec --all) uniquement s'il se trouve à N niveaux ou moins sous la commande de commande ; --max-depth=0 est identique à --summarize

3voto

Mitchell Tracy Points 131

Vous pouvez utiliser la commande suivante :

find -maxdepth 1 -exec du -sh "{}" \; | sort -h

Cela vous donne :

  • Taille des fichiers/répertoires cachés
  • Taille des fichiers/répertoires non cachés
  • Taille totale du répertoire courant

Il trie également les résultats pour permettre de voir facilement ce qui est le plus grand. J'en ai aussi fait un alias dans mon ~/.bash_aliases fichier.

alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'

Maintenant je peux juste exécuter big pour trouver les plus grands répertoires dans un répertoire et sbig quand j'ai besoin sudo les permissions.

2voto

Nix Nikhil Points 21

Cette commande vous aidera à vérifier l'utilisation du disque, allez dans votre répertoire et exécutez ce qui suit :

du -sch .[!.]* * | sort -h

Voici une démonstration de la façon de calculer l'utilisation du disque d'un répertoire particulier.

J'ai créé un répertoire appelé Du_sh et créé deux fichiers à l'intérieur (un caché [10 Mo] et un normal [20 Mo]).

nikhil@debian:~$ mkdir Du_sh
nikhil@debian:~$ cd Du_sh/
nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240
10240+0 records in
10240+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s
nikhil@debian:~/Du_sh$ 
nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240
10240+0 records in
10240+0 records out
20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s
nikhil@debian:~/Du_sh$ du -sch .[!.]* * 
10M .10MB
20M 20MB
30M total
nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h
10M .10MB
20M 20MB
30M total
nikhil@debian:~/Du_sh$

1voto

sparrow Points 19

La commande correcte est :

du -hs .* *

Desde man pages :

   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)

   -s, --summarize
          display only a total for each argument

Vous pouvez en savoir plus sur du Befehl aquí .

1voto

Gokul Naathan Points 61

La plupart des choses que j'ai essayées (y compris d'autres réponses) n'ont pas fonctionné d'une manière ou d'une autre, donc voici ma solution (actuellement) finale pour l'utiliser du :

ls -A | while read file; do du -sh "$file"& done | sort -h;
  • ls -A Tous les fichiers, y compris les fichiers cachés, sans . y ..
  • while read file; do du -sh "$file"& done Exécuter le du sur chaque entrée de ls -A en parallèle. Je n'ai pas encore eu de problème concernant un trop grand parallélisme, mais vous pouvez soit remplacer & par ; le rendre synchrone ou ajouter [ $( jobs | wc -l ) -ge $( nproc ) ] && wait avant done
  • sort -h Trier par taille

Pendant que j'y suis : J'ai une fonction nommée dus ajouté à mon profil pour garder cette fonction à portée de main :

dus () { ls -A | while read file; do du -sh "$file"& done | sort -h; }

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