V AWK:
{ sum += $1 }
END { print sum }
Takže
du -b /tmp/* | awk '{ sum += $1 } END { print sum }'
Všimněte si, že výsledek nebude správný, pokud jsou adresáře pod /tmp
mají samy podadresáře, protože du
vytváří průběžné součty adresářů a jejich potomků.
du -s
vypočítá součet za vás správně (na všech podadresářích a souborech v /tmp
, včetně skrytých):
du -sb /tmp
a du -c
vypočítá součet uvedených adresářů a souborů také správně:
du -cb /tmp/*
Můžete také vytvořit celkový součet vybraných souborů pomocí du -c
. Toto funguje, i když je argument du
není adresář, což není případ du -s
:
$ du -sb file1 file2
17 file1
18 file2
$ du -cb file1 file2
17 file1
18 file2
35 total
BTW, pro interaktivní použití doporučuji přidat -h
možnost namísto -b
nebo jakýkoli jiný multiplikátor velikosti bloku. Toto vytiskne velikost ve formátu jednotek čitelných pro člověka.
$ du -ch file1 file2
4.0K file1
4.0K file2
8.0K total
Je to jednoduché, můžete použít:
du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'
Pokud nepoužíváte zástupný znak, pokud používáte název adresáře jako /tmp
, pak se musíte vyhnout poslednímu záznamu, protože výstup je du -b /tmp
je jako:
size1 file1
size2 file2
size_total .
Takže teď byste se měli vyhnout tomuto poslednímu záznamu, takže použijte:
du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'
Můžete však také použít -s
možnost, vypočítá souhrn za vás, pak nemusíte přidávat hodnoty, stačí vytisknout poslední, tj.:
du -s directory