Queremos calcular os primeiros números que obtemosdu
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
então a soma final será
sum=6+668669+6+42456+32786+6+32786+262244
echo $sum
Como podemos fazer isso por awk ou perl one liners?
Em AWK:
Então
Observe que o resultado não estará correto se os diretórios abaixo
/tmp
tiverem subdiretórios, porquedu
produz totais em execução nos diretórios e seus filhos.du -s
calculará a soma para você corretamente (em todos os subdiretórios e arquivos em/tmp
, incluindo os ocultos):e
du -c
calculará a soma dos diretórios e arquivos listados corretamente também:Você também pode produzir uma soma total de arquivos selecionados com
du -c
. Isso funciona mesmo que um argumento dedu
não seja um diretório, o que não é o caso dedu -s
:BTW, para uso interativo, recomendo adicionar
-h
opção em vez de-b
qualquer outro multiplicador de tamanho de bloco. Isso imprimirá o tamanho em formato de unidade legível por humanos.É simples você pode usar:
Se você não estiver usando curinga, se estiver usando o nome do diretório como
/tmp
, precisará evitar a última entrada porque a saída dedu -b /tmp
é como:Então agora você deve evitar esta última entrada, então use:
Porém você também pode usar
-s
a opção, ela irá calcular o resumo para você então não precisa somar os valores, apenas imprima o último, ou seja: