Im AWK:
{ sum += $1 }
END { print sum }
Also
du -b /tmp/* | awk '{ sum += $1 } END { print sum }'
Beachten Sie, dass das Ergebnis nicht korrekt ist, wenn die Verzeichnisse unter /tmp
selbst Unterverzeichnisse haben, weil du
erzeugt laufende Summen für Verzeichnisse und ihre untergeordneten Elemente.
du -s
berechnet die Summe für Sie korrekt (auf alle Unterverzeichnisse und Dateien in /tmp
, einschließlich versteckter):
du -sb /tmp
und du -c
berechnet die Summe der aufgelisteten Verzeichnisse und Dateien auch korrekt:
du -cb /tmp/*
Mit du -c
können Sie auch eine Gesamtsumme ausgewählter Dateien erzeugen . Dies funktioniert auch bei einem Argument von du
kein Verzeichnis ist, was bei du -s
nicht der Fall ist :
$ du -sb file1 file2
17 file1
18 file2
$ du -cb file1 file2
17 file1
18 file2
35 total
Übrigens, für die interaktive Verwendung empfehle ich das Hinzufügen von -h
Option anstelle von -b
oder irgendein anderer Multiplikator der Blockgröße. Dadurch wird die Größe im menschenlesbaren Einheitenformat gedruckt.
$ du -ch file1 file2
4.0K file1
4.0K file2
8.0K total
Es ist einfach, Sie können verwenden:
du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'
Wenn Sie keinen Platzhalter verwenden, wenn Sie einen Verzeichnisnamen wie /tmp
verwenden , dann müssen Sie den letzten Eintrag vermeiden, da du -b /tmp
ausgegeben wird ist wie:
size1 file1
size2 file2
size_total .
Jetzt sollten Sie also diesen letzten Eintrag vermeiden, also verwenden Sie:
du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'
Sie können aber auch -s
verwenden Option, es wird die Zusammenfassung für Sie berechnen, dann brauchen Sie die Werte nicht hinzuzufügen, drucken Sie einfach den letzten, d.h.:
du -s directory