web-dev-qa-db-fra.com

Trouver les plus grands répertoires / fichiers récursivement

Je cherche un script/programme qui affichera le top x les plus grands répertoires/fichiers, puis descendez dans ces dossiers et affichez le x Les plus grands répertoires/fichiers pour une profondeur configurable.

231MB bin
 - 220MB ls
  - 190MB dir
  - 15MB def
  - 3MB lpr
 - 10MB asd
 - 1MB link

Comment puis je faire ça?

16
Robert Munteanu

Vous pouvez voir les 10 plus grands répertoires avec:

du -cks *|sort -rn|head

Cela ajoutera récursivement les tailles de tout dans chaque répertoire - mais vous devriez l'exécuter manuellement à chaque niveau pour obtenir une décomposition de ce qui est dans chaque

22
Brent

Les chances sont que votre système possède l'une d'entre elles installées ou disponible via votre gestionnaire de packages:

Graphique:

  • Baobab - AKA Analyseur d'utilisation du disque - Gnome (Applications> Accessoires ou applications> Outils système)
  • kdirstat - kde
  • Filelight - KDE
  • Treeize pour UNIX - GTK2

Texte basé sur le texte:

  • NCD - NCurses
  • GT5 - Navigateur de texte (Lynx, W3M, etc. - auto-sélectionné) - C'est en fait un script shell!

Ils peuvent ne pas fonctionner exactement comme vous l'avez spécifié, mais ils devraient faire la plupart de ce dont vous avez besoin.

Ma variation sur la réponse de Brent est:

# du -a | sort -rn | head

Qui vous donnera les plus grands répertoires ou fichiers de l'arbre.

7
David Pashley

Vous pouvez faire un peu similaire à utiliser trouver:

# find -maxdepth 2 -type d -exec du -sh {} \;

Mais cela ne sera pas trié par la taille et sera incroyable lent et inefficace. Mieux vaut écrire un script qui analyse du -a.

3
David Pashley

(Je voulais ajouter ceci comme un commentaire à la réponse de Brent, mais ne voyez pas un lien pour faire cela) J'ai récemment eu un problème similaire, et si vous avez besoin de vérifier une partition en question, l'ajout d'A -X à la réponse de Brent est assez utile, Surtout si certains répertoires ont leur propre partition.

Ce serait donc:

du -ckx / | sort -rn | head 
2
rumz

Quelque chose à retenir sur la sortie lisible par l'homme est qu'un tri inversé numérique ne fonctionnera pas comme prévu sans le réparer. Une option plus rapide consiste à utiliser le commutateur -K pour émettre les informations de taille de répertoire en kilo-octets.

J'aurais un bref look dans le manuel de tri - sur certains systèmes que vous pouvez utiliser sort -h Pour trier la sortie lisible par l'homme. J'ai utilisé cela sur Centos 6.2 avec TRY 8.4. Sinon, vous pouvez rediriger la sortie de du -h dans un fichier et trier cela avec quelque chose comme:

for i in K M G; do egrep "^[0-9,\.]+${i}" somefile | sort -n; done
1
Gary Chambers

Je ne connais pas d'un outil de ligne de commande qui fait cela (autre que ce que les autres réponses ont suggérées), mais si vous êtes en mesure d'exécuter des programmes d'interface graphique sur cette machine, essayez kdirstat . Il affiche l'utilisation du disque de tous les fichiers et répertoires sous une racine particulière, triés par taille (par défaut).

0
David Z