392 votes

Comment obtenir les tailles récapitulatives des répertoires et de leurs sous-répertoires ?

Disons que je veux obtenir la taille de chaque répertoire d'un système de fichiers Linux. Quand j'utilise ls -la, je n'obtiens pas vraiment la taille résumée des dossiers.

Si j'utilise df, j'obtiens la taille de chaque système de fichiers monté mais cela ne m'aide pas non plus. Et avec du, j'obtiens la taille de chaque sous-répertoire et le résumé de l'ensemble du système de fichiers.

Mais je veux avoir uniquement la taille résumée de chaque répertoire dans le dossier ROOT du système de fichiers. Y a-t-il une commande pour y parvenir?

1 votes

Le drapeau --total m'a été utile. Par exemple du -sh --total applications/*. askubuntu.com/a/465436/48214

7voto

Aaron Digulla Points 6565

Ce n'est pas facile. La commande du affiche soit les fichiers et dossiers (par défaut) soit juste les tailles de tous les éléments que vous spécifiez en ligne de commande (option -s).

Pour obtenir les plus grands éléments (fichiers et dossiers), triés, avec des tailles lisibles par l'homme sur Linux:

du -h | sort -h

Cela vous noiera dans une tonne de petits fichiers. Vous pouvez vous en débarrasser avec --threshold (1 Mo dans mon exemple):

du --threshold=1M -h | sort -h

L'avantage de cette commande est qu'elle inclut les dossiers cachés par des points (dossiers qui commencent par .).

Si vous voulez vraiment juste les dossiers, vous devez utiliser find mais cela peut être très, très lent car du devra scanner de nombreux dossiers plusieurs fois:

find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h

2 votes

--seuil ^^^ cette option n'est pas disponible sur Linux

2 votes

@podarok Il est disponible sur OpenSUSE 13.2 Linux. Essayez de trouver une version plus récente de votre distribution ou de compiler une version plus récente du package vous-même.

1 votes

Cela ne fonctionne pas sur Ubuntu LTS (14.04). C'est le plus récent.

2voto

sherbang Points 2675

Vous voudrez peut-être également consulter xdiskusage. Vous donnera les mêmes informations, mais affichées graphiquement, plus vous permet de descendre dans les détails (très utile). Il existe d'autres utilitaires similaires pour KDE et même Windows.

2voto

Jimmy Koerting Points 201

Sachez que vous ne pouvez pas comparer des répertoires avec du sur des systèmes/machines différents sans vous assurer que les deux partagent la même taille de bloc du système de fichiers. Cela peut être pertinent si vous synchronisez certains fichiers depuis une machine linux vers un nas et que vous souhaitez comparer le répertoire synchronisé sur votre propre machine. Vous pourriez obtenir des résultats différents avec du en raison de tailles de bloc différentes....

1voto

J.M. Stoorvogel Points 11

Vous pourriez utiliser ls en conjonction avec awk:

ls -al * | awk 'BEGIN {tot=0;} {tot = tot + $5;} END {printf ("%.2fMo\n",tot/1024/1024);}'

La sortie de ls est envoyée à awk. awk commence le traitement des données. Le délimiteur standard est l'espace. La variable de somme tot est initialisée à zéro; l'instruction suivante est exécutée pour chaque rangée/ligne produite par ls. Elle se contente d'incrémenter tot avec la taille. $5 représente la cinquième colonne (produite par ls). En fin de compte, nous divisons par (1024*1024) pour obtenir la somme en mégaoctets.

Si vous vouliez convertir ceci en un script ou une fonction (.bashrc), vous pourriez également l'utiliser pour obtenir la taille de certains sous-ensembles de répertoires, selon les types de fichiers.

Si vous souhaitez des informations à l'échelle du système, kdirstat pourrait s'avérer utile!

1 votes

Je suis d'accord qu'on peut étendre cet exemple et faire des astuces pour obtenir la taille de "certains sous-ensembles de répertoires, selon les types de fichiers" etc.; cela peut sembler un bon point de départ. Néanmoins, cette solution est fautive dès le départ. À tous les utilisateurs qui aimeraient utiliser cette méthode, je recommande de lire les réponses et les commentaires à cette question ainsi que l'article lié ici. Je ne dis pas que vous ne pouvez pas le faire du tout. Connaissez les limitations, c'est tout.

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