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 find
und 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;
Ich verwende es ständig, viel einfacher und schneller als jede benutzerdefinierte Bash. (Kann durch die Verzeichnisse navigieren, spart jede Menge Zeit).