Disons que je veux obtenir la taille de chaque répertoire d'un système de fichiers Linux. Lorsque j'utilise ls -la
, je ne reçois pas vraiment la taille récapitulative 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
, je reçois la taille de chaque sous-répertoire et le résumé de tout le système de fichiers.
Mais je veux avoir seulement la taille résumée de chaque répertoire dans le dossier ROOT du système de fichiers. Y a-t-il un commandement pour y parvenir?
Cela fait ce que vous cherchez:
du -sh /*
Qu'est-ce que cela signifie:
-s
pour ne donner que le total pour chaque argument de ligne de commande.-h
pour les suffixes lisibles par l'homme tels que M
pour les mégaoctets et G
pour les gigaoctets (facultatif)./*
s'étend simplement à tous les répertoires (et fichiers) dans /
.
Remarque: les fichiers de points ne sont pas inclus; lancez shopt -s dotglob
pour les inclure aussi.
Le tri par taille est également utile:
du -sh /* | sort -h
Ici:
-h
garantit que sort
interprète correctement les suffixes lisibles par l'homme.J'ai souvent besoin de trouver les plus gros répertoires, donc pour obtenir une liste triée contenant les 20 plus grands répertoires, je fais ceci:
du -m /some/path | sort -nr | head -n 20
Dans ce cas, les tailles seront indiquées en mégaoctets.
J'aime utiliser Ncdu pour cela, vous pouvez utiliser le curseur pour naviguer dans la structure de répertoires, cela fonctionne vraiment bien.
Les réponses existantes sont très utiles, peut-être que certains débutants (comme moi) le trouveront également utile.
Boucle très basique, mais pour moi, c'était un bon début pour d'autres opérations liées à la taille:
for each in $(ls) ; do du -hs "$each" ; done
Très similaire à la première réponse et presque le même résultat que 1.), mais il m'a fallu un certain temps pour comprendre la différence de * à ./* si dans un sous-répertoire:
du -sh ./*
L'invocation du
suivante devrait fonctionner sur les systèmes BSD:
du -d 1 /
Ce n'est pas facile La commande du
affiche les fichiers et les dossiers (valeur par défaut) ou uniquement la taille de tous les éléments spécifiés sur la ligne de commande (option -s
).
Pour obtenir les éléments les plus volumineux (fichiers et dossiers), triés, avec des tailles lisibles par l'homme sous Linux:
du -h | sort -h
Cela vous enterrera 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 des dossiers à points cachés (dossiers commençant par .
).
Si vous ne voulez que les dossiers, vous devez utiliser find
, mais cela peut être très lent car du
devra analyser plusieurs dossiers à plusieurs reprises:
find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h
Sachez que vous ne pouvez pas comparer les répertoires avec du
sur différents systèmes/machines sans vous en assurer, les deux partagent la même taille de bloc du système de fichiers. Cela pourrait compter si vous synchronisez certains fichiers d'une machine Linux sur un NAS et que vous souhaitez comparer le répertoire synchronisé vous-même. Vous pourriez obtenir des résultats différents avec du
en raison de différentes tailles de bloc ....
Vous pouvez utiliser ls
conjointement avec awk
:
ls -al * | awk 'BEGIN {tot=0;} {tot = tot + $5;} END {printf ("%.2fMb\n",tot/1024/1024);}'
La sortie de ls
est transmise à awk
. awk
commence à traiter les données. Le délimiteur standard est l’espace. La variable somme tot
est initialisée à zéro; L'instruction suivante est exécutée pour chaque ligne/ligne générée par ls
. Il incrémente simplement tot
avec la taille. $5
représente la cinquième colonne (sortie par ls
). À la fin, nous divisons par (1024 * 1024) pour totaliser en mégaoctets.
Si vous voulez convertir cela en un script ou une fonction (.bashrc), vous pouvez également l'utiliser pour obtenir la taille de certains sous-ensembles de répertoires, en fonction des types de fichiers.
Si vous souhaitez des informations sur l’ensemble du système, kdirstat
peut vous être utile!
Vous pouvez également vouloir vérifier xdiskusage . Vous donnera les mêmes informations, mais montrées graphiquement, plus vous permet d’avancer dans le détail (très utile). Il existe d'autres utilitaires similaires pour KDE et même Windows.