Comment trouver les répertoires ou fichiers les plus gourmands en espace?

11

Mon disque manque d'espace:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Je voudrais parcourir tout le répertoire personnel et découvrir les 10 principaux répertoires ou fichiers consommant beaucoup d'espace, pour décider qui supprimer.

du -sh *peut voir la taille de tous les sous-répertoires, mais il obtient uniquement le dossier actuel. Je devrais peut-être me diviser en plusieurs sous-répertoires respectivement et récursivement pour savoir qui sont les coupables dont j'ai besoin.

Y at-il un bon moyen de le faire?

Deqing
la source

Réponses:

5

Si vous pouvez utiliser une interface graphique, essayez Baobab . Il s'agit d'un outil graphique pour analyser l'utilisation de l'espace disque dur.

Uwe Plonus
la source
10

ncdu est une option de ligne de commande qui analyse les répertoires et répertorie l'utilisation du disque du plus élevé au plus bas. C'est mon outil de prédilection pour cela.

Vous devrez toujours plonger de manière récursive de cette façon, mais c'est une belle façon facile de le faire.

Rob
la source
9

Utilisez cette commande:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Il vous montrera le type de graphique en ligne de commande montrant les répertoires qui consomment le plus d'espace en pourcentage.

Si vous voulez analyser le /homeseul - vous pouvez le spécifier dans la commande comme ceci:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Cela ressemblera à ça: entrez la description de l'image ici

Pris d' ici .

mnmnc
la source
9

du | sort -rn | tête

  • du = Utilisation du disque
  • trier par ordre numérique, inverser
  • les dix premières lignes
Julien
la source
4

+1 pour Baobab. sur la ligne de commande, j'utilise généralement juste du -hcsx *ou du -hcsx * | sort -h(nécessite une version récente de sort) et puis vérifie les sous-répertoires au fur et à mesure.

En outre, mca une fonctionnalité intéressante de calculer la taille des sous-répertoires en appuyant sur Ctrl+ Spaceau-dessus (appuyez sur Ctrl+ Spaceen haut de ..pour faire calculer la taille de tous les sous-répertoires. Ensuite, vous pouvez sélectionner trier par taille dans le menu.

Stefan Seidel
la source
2
sur la ligne de commande, vous devriez essayer ncdu. C'est un ncurses du, en gros.
Rob
1

Essaye ça:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10
Rajeev
la source
0

Un autre favori de l'interface graphique: kdirstat

Il a de belles capacités d'exploration et un menu d'outils (extensible) pour vous aider à supprimer / compresser vos fichiers.

J'ai également un script de ligne de commande que j'appelle dir_usage que j'ai téléchargé sur pastebin.

Rich Homolka
la source
-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

La ligne de commande ci-dessus fait ce qui suit (dans l'ordre):

  • Trouver tous les fichiers (pas les répertoires) dans le dossier actuel
  • Afficher l'utilisation de chacun d'eux
  • Trier les résultats numériquement
  • Utilisez uniquement les 10 dernières lignes (utilisation la plus élevée)
  • Découpez les 10 noms de fichiers (la première colonne correspond à l'utilisation, la seconde au nom de fichier)
  • Afficher l'utilisation de chaque nom de fichier (au format humain)

Cela se traduira par une liste des tailles lisibles par l'homme des 10 plus gros fichiers du dossier et des sous-dossiers actuels.

user275234
la source
3
Pouvez-vous développer votre réponse?
50-3