find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -
Isso pressupõe (recente o suficiente?) versões GNU de find
e du
.
Estou usando este comando para encontrar as pastas desejadas e contar o tamanho.
find . -type d -name 'tmp_c*' | xargs du -hcs {} \; +
Minha versão do find não é compatível com -exec. Mas isso funciona. No entanto, não tenho certeza se está me dando os totais corretos nos diretórios que contêm minha string de pesquisa. Quando executo o comando e o pipe para menos, vejo a contagem do tamanho de cada pasta e, em seguida, gera um total de vez em quando. Assim:
140K ./r/g/userid/attach/tmp_c_241091464_2
68K ./r/g/userid/attach/tmp_c_58367014_undefined
2.3G total
Se eu redirecionar a saída para um arquivo, em seguida, o grep no total, recebo isso:
2.3G total
978M total
1.1G total
2.0G total
1.1G total
Eu acho que isso está me dando os números certos. Mas como eu posso levar este comando um passo adiante e fazer com que ele some os totais para um total geral em uma linha?
find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -
Isso pressupõe (recente o suficiente?) versões GNU de find
e du
.
Isso deve funcionar, testado na minha caixa EL4 ... é o mais antigo que tenho e me faz estremecer, não sei como você usa o EL3.
find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1
Feito com coreutils-4.5.3-26
One alternate solution is to use awk:
mas o script deve ser adaptado para este caso, tente
find . -type d -name 'tmp_c*' -print0 | xargs -0 du -s | awk 'BEGIN { sum=0 } { sum+=$1 } END { print sum }'
a saída será em decimal
Eu verifiquei epel começa em 5 não 3, por isso só opção é script personalizado.
Também pode instalar o ncdu;
Eu uso isso o tempo todo, muito mais fácil, mais rápido do que qualquer bash personalizado. (Pode navegar pelos dirs, economiza muito tempo).
Tags directory disk-usage find