| Geen van de standaard Unix-traversal-methoden (zoals `find`, `ls` of `tree`) berekent rechtstreeks de totale grootte van elke map in één enkel commando. Ze tonen doorgaans de grootte van bestanden in een map, maar niet de recursieve som van de groottes van alle bestanden en submappen in die map.
Om de totale grootte van elke map te berekenen, gebruikt u doorgaans `du` (schijfgebruik). Echter, `du` "doorkruist" niet inherent elke directory en drukt de naam en grootte ervan afzonderlijk af. Het rapporteert de grootte van elke map, *inclusief de submappen*, wat op subtiele wijze verschilt van een traversal die expliciet elke map en de grootte ervan zou vermelden, onafhankelijk van de onderliggende mappen.
Hier ziet u hoe u een directory-traversal kunt realiseren die de totale grootte van elke map laat zien:
`du` gebruiken met `find`:
Dit combineert `find` voor de traversal en `du` voor grootteberekening. `find` geeft een lijst van elke map, en `xargs` voedt die mappen naar `du`:
``` bash
vinden . -type d-print0 | xargs -0 -I {} du -sh {}
```
* `vind. -type d -print0`:Dit vindt alle mappen ( `-type d`) beginnend bij de huidige map (`.`) en drukt hun namen af, gescheiden door nultekens (`-print0`). Nultekens zijn cruciaal voor het verwerken van bestandsnamen met spaties of speciale tekens.
* `xargs -0 -I {} du -sh {}`:Dit neemt de null-gescheiden bestandsnamen uit `find` en voert `du -sh` uit op elk bestand. `-0` vertelt `xargs` null-gescheiden invoer te verwachten, `-I {}` stelt `{}` in als tijdelijke aanduiding voor de bestandsnaam, `du -sh` toont de grootte in een voor mensen leesbaar formaat (`-h`) en alleen de samenvattingsgrootte (niet de grootte van elk bestand daarin) `-s`.
Dit komt het dichtst in de buurt van een doorgang die u expliciet de grootte van elke map geeft. Het `du`-commando zelf is niet strikt een traversal-algoritme, maar wanneer het samen met `find` wordt gebruikt, voert de combinatie de gewenste actie uit. |