In AWK:
{ sum += $1 }
END { print sum }
Quindi
du -b /tmp/* | awk '{ sum += $1 } END { print sum }'
Nota che il risultato non sarà corretto se le directory in /tmp
hanno delle sottodirectory, perché du
produce totali parziali sulle directory e sui loro figli.
du -s
calcolerà correttamente la somma per te (su tutte le sottodirectory e i file in /tmp
, compresi quelli nascosti):
du -sb /tmp
e du -c
calcolerà la somma delle directory e dei file elencati, anche correttamente:
du -cb /tmp/*
Puoi anche produrre una somma totale dei file selezionati con du -c
. Funziona anche se un argomento è du
non è una directory, cosa che non è il caso di du -s
:
$ du -sb file1 file2
17 file1
18 file2
$ du -cb file1 file2
17 file1
18 file2
35 total
A proposito, per un uso interattivo consiglio di aggiungere -h
opzione invece di -b
o qualsiasi altro moltiplicatore della dimensione del blocco. Questo stamperà le dimensioni in formato unità leggibile dall'uomo.
$ du -ch file1 file2
4.0K file1
4.0K file2
8.0K total
È semplice che puoi usare:
du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'
Se non stai usando caratteri jolly, se stai usando un nome di directory come /tmp
, allora devi evitare l'ultima voce a causa dell'output di du -b /tmp
è come:
size1 file1
size2 file2
size_total .
Quindi ora dovresti evitare quest'ultima voce, quindi usa:
du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'
Tuttavia puoi anche usare -s
opzione, calcolerà il riepilogo per te, quindi non è necessario aggiungere i valori, basta stampare l'ultimo, ad esempio:
du -s directory