Wir wollen die ersten Zahlen berechnen, von denen wir bekommen du
du -b /tmp/*
6 /tmp/216c6f99-6671-4865-b8bc-7205f5388752_resources
668669 /tmp/hadoop7887078727316788325.tmp
6 /tmp/hadoop-hdfs
42456 /tmp/hive
32786 /tmp/hsperfdata_hdfs
6 /tmp/hsperfdata_hive
32786 /tmp/hsperfdata_root
262244 /tmp/hsperfdata_yarn
so wird die endgültige Summe sein
sum=6+668669+6+42456+32786+6+32786+262244
echo $sum
Wie können wir es mit awk oder perl one linern machen?
linux
shell-script
awk
perl
disk-usage
Yael
quelle
quelle
du -bs /tmp
Antworten:
In AWK:
Damit
Beachten Sie, dass das Ergebnis nicht korrekt ist, wenn die Verzeichnisse unter
/tmp
selbst Unterverzeichnisse haben, dadu
laufende Summen für Verzeichnisse und deren untergeordnete Elemente erstellt werden.du -s
berechnet die Summe für Sie korrekt (für alle Unterverzeichnisse und Dateien in/tmp
, einschließlich versteckter):und
du -c
berechnet auch die Summe der aufgelisteten Verzeichnisse und Dateien korrekt:quelle
Es ist einfach, Sie können verwenden:
Wenn Sie keinen Platzhalter verwenden, wenn Sie einen Verzeichnisnamen wie verwenden
/tmp
, müssen Sie den letzten Eintrag vermeiden, da die Ausgabe vondu -b /tmp
wie folgt lautet:Jetzt sollten Sie diesen letzten Eintrag vermeiden. Verwenden Sie also:
Sie können jedoch auch die
-s
Option verwenden. Sie berechnet die Zusammenfassung für Sie, dann müssen Sie die Werte nicht hinzufügen. Drucken Sie einfach die letzte aus, dh:quelle
Sie können auch eine Gesamtsumme ausgewählter Dateien mit erstellen
du -c
. Dies funktioniert auch dann, wenn ein Argument vondu
kein Verzeichnis ist. Was ist nicht der Fall beidu -s
:Übrigens empfehle ich für die interaktive Verwendung das Hinzufügen einer
-h
Option anstelle eines-b
anderen Multiplikators der Blockgröße. Dadurch wird die Größe im lesbaren Einheitenformat gedruckt.quelle