Keine der Standard -UNIX -Traversalmethoden (wie "find", "ls" oder "baum") berechnet direkt die Gesamtgröße jedes Verzeichnisses in einem einzigen Befehl. Sie zeigen in der Regel die Größe der Dateien in einem Verzeichnis, jedoch nicht die rekursive Summe der Größen aller Dateien und Unterverzeichnisse in diesem Verzeichnis.
Um die Gesamtgröße jedes Verzeichnisses zu berechnen, verwenden Sie in der Regel `du` (Disk -Nutzung). "Du" "durchquert" nicht von Natur aus im Sinne, jeden Verzeichnis zu besuchen und seinen Namen und seine Größe separat zu drucken. Es meldet die Größe jedes Verzeichnisses *einschließlich seiner Unterverzeichnisse *, die sich subtil von einem Traversal unterscheidet, der jedes Verzeichnis und seine Größe unabhängig von seinen Kindern ausdrücklich auflistet.
So können Sie eine Verzeichnisquelle erreichen, die die Gesamtgröße jedes Verzeichnisses zeigt:
Verwenden von `du` mit` find`:
Dies kombiniert "Find" für die Traversal und "Du" für die Größenberechnung. `Find` listet jedes Verzeichnis auf, und` xargs` führt diese Verzeichnisse zu "Du`:
`` `bash
finden . -Type d -print0 | xargs -0 -i {} du -sh {}
`` `
* `finden. -Type d -print0`:Dies findet alle Verzeichnisse (`-Type d`), beginnend mit dem aktuellen Verzeichnis (` .`) und druckt ihre Namen, die durch Null-Zeichen (`-print0`) getrennt sind. Nullzeichen sind entscheidend für die Umstellung von Dateinamen mit Räumen oder Sonderzeichen.
* `xargs -0 -i {} du -sh {}`:Dies nimmt die null -getrennten Dateinamen von `find` und läuft` du -sh` auf jedem einzelnen. `-0` sagt, dass` xargs` null-getrennte Eingaben erwartet, `-i {}` setzt `{}` als Platzhalter für den Dateinamen, `du -sh` zeigt die Größe der Größe in einem menschlichen lesbaren Format (` -h`) und nur die Abfassungsgröße (nicht die Größe der einzelnen Dateien im Inneren).
Dies ist das nächste, was Sie zu einem Traversal erreichen, der Ihnen explizit die Größe jedes Verzeichnisses gibt. Der Befehl "du" selbst ist kein Traversalalgorithmus, aber wenn sie mit "Find" verwendet wird, führt die Kombination die gewünschte Aktion aus.