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?
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
Les chances sont que votre système possède l'une d'entre elles installées ou disponible via votre gestionnaire de packages:
Graphique:
Texte basé sur le texte:
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.
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.
(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
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
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).