Finden Sie die Größe der Verzeichnisse rekursiv und erhalten Sie eine Gesamtsumme

Finden Sie die Größe der Verzeichnisse rekursiv und erhalten Sie eine Gesamtsumme

Ich verwende diesen Befehl, um die gewünschten Ordner zu finden und ihre Größe zu zählen.

find . -type d -name 'tmp_c*' | xargs du -hcs {} \; + 

Meine Version von find unterstützt -exec nicht. Aber das funktioniert. Allerdings bin ich mir nicht sicher, ob es mir die richtigen Summen für die Verzeichnisse liefert, die meinen Suchbegriff enthalten. Wenn ich den Befehl ausführe und ihn an less weiterleite, sehe ich, wie es die Größe jedes Ordners hochzählt und dann von Zeit zu Zeit eine Summe ausgibt. So:

140K    ./r/g/userid/attach/tmp_c_241091464_2
68K     ./r/g/userid/attach/tmp_c_58367014_undefined
2.3G    total

Wenn ich die Ausgabe in eine Datei umleite und dann „total“ mit Grep auswerte, erhalte ich Folgendes:

2.3G    total
978M    total
1.1G    total
2.0G    total
1.1G    total

ICHdenkendas gibt mir die richtigen Zahlen. Aber wie kann ich diesen Befehl noch einen Schritt weiterführen und die Summen in einer Zeile zu einer Gesamtsumme zusammenfassen lassen?

Antwort1

find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -

Dies setzt (aktuelle genug?) GNU-Versionen von findund voraus du.

Antwort2

Das sollte funktionieren, getestet auf meiner EL4-Box … es ist die älteste, die ich habe, und es bringt mich zum Schaudern, ich weiß nicht, wie Sie EL3 verwenden.

find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1

Fertig mitcoreutils-4.5.3-26

Antwort3

https://stackoverflow.com/a/1323769/799204

Eine alternative Lösung besteht darin, awk zu verwenden:

aber das Skript muss für diesen Fall angepasst werden, versuchen Sie

find . -type d -name 'tmp_c*' -print0 | xargs -0 du -s | awk 'BEGIN { sum=0 } { sum+=$1 } END { print sum }'

Die Ausgabe erfolgt in Dezimalzahlen

Antwort4

Ich habe überprüft, dass Epel bei 5 und nicht bei 3 beginnt, daher ist das benutzerdefinierte Skript die einzige Option.

Kann auch ncdu installieren;

https://dev.yorhel.nl/ncduit

Ich verwende es ständig, viel einfacher und schneller als jede benutzerdefinierte Bash. (Kann durch die Verzeichnisse navigieren, spart jede Menge Zeit).

verwandte Informationen