Aucune des méthodes de parcours Unix standard (comme « find », « ls » ou « tree ») ne calcule directement la taille totale de chaque répertoire en une seule commande. Ils affichent généralement la taille des fichiers dans un répertoire, mais pas la somme récursive des tailles de tous les fichiers et sous-répertoires de ce répertoire.
Pour calculer la taille totale de chaque répertoire, vous utiliserez généralement « du » (utilisation du disque). Cependant, `du` ne "traverse" pas intrinsèquement dans le sens de visiter chaque répertoire et d'imprimer son nom et sa taille séparément. Il indique la taille de chaque répertoire, *y compris ses sous-répertoires*, ce qui est subtilement différent d'un parcours qui répertorierait explicitement chaque répertoire et sa taille indépendamment de ses enfants.
Voici comment réaliser une traversée de répertoires qui montre la taille totale de chaque répertoire :
Utiliser `du` avec `find` :
Ceci combine « find » pour le parcours et « du » pour le calcul de la taille. `find` répertorie chaque répertoire, et `xargs` transmet ces répertoires à `du` :
```bash
trouver . -type d -print0 | xargs -0 -I {} du -sh {}
```
* `trouver. -type d -print0` :Ceci recherche tous les répertoires ( `-type d`) à partir du répertoire courant (`.`) et imprime leurs noms séparés par des caractères nuls (`-print0`). Les caractères nuls sont cruciaux pour gérer les noms de fichiers contenant des espaces ou des caractères spéciaux.
* `xargs -0 -I {} du -sh {}` :ceci prend les noms de fichiers séparés par des valeurs nulles de `find` et exécute `du -sh` sur chacun d'eux. `-0` indique à `xargs` d'attendre une entrée séparée par des valeurs nulles, `-I {}` définit `{}` comme espace réservé pour le nom de fichier, `du -sh` affiche la taille dans un format lisible par l'homme (`-h`) et uniquement la taille du résumé (pas la taille de chaque fichier à l'intérieur) `-s`.
C'est ce qui se rapproche le plus d'un parcours qui vous donne explicitement la taille de chaque répertoire. La commande `du` elle-même n'est pas strictement un algorithme de parcours, mais lorsqu'elle est utilisée avec `find`, la combinaison effectue l'action souhaitée.
|