Encontre o tamanho dos diretórios recursivamente e obtenha um total

Encontre o tamanho dos diretórios recursivamente e obtenha um total

Estou usando este comando para encontrar as pastas que desejo e contar o tamanho.

find . -type d -name 'tmp_c*' | xargs du -hcs {} \; + 

Minha versão do find não suporta -exec. Mas isso funciona. No entanto, não tenho certeza se estou fornecendo os totais corretos nos diretórios que contêm minha string de pesquisa. Quando executo o comando e canalizo para less, vejo que ele conta o 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 e grep no total, recebo o seguinte:

2.3G    total
978M    total
1.1G    total
2.0G    total
1.1G    total

EUpensarisso está me dando os números certos. Mas como posso levar esse comando um passo adiante e somar os totais de um total geral em uma linha?

Responder1

find . -type d -name 'tmp_c*' -print0 | du -hcs --files0-from -

Isso pressupõe versões (suficientemente recentes?) GNU de finde du.

Responder2

Deve funcionar, testei na minha caixa EL4... é a mais antiga que tenho e me dá arrepios, não sei como você usa o EL3.

find . -type d -name 'tmp_c*' -print0|xargs -0 du -c|tail -1

Feito comcoreutils-4.5.3-26

Responder3

https://stackoverflow.com/a/1323769/799204

Uma solução alternativa é usar o 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

Responder4

Verifiquei que o epel começa em 5 e não em 3, então a única opção é o script personalizado.

Também pode instalar o ncdu;

https://dev.yorhel.nl/ncduit

Eu uso isso o tempo todo, muito mais fácil e rápido do que qualquer festa personalizada. (Pode navegar pelos diretórios, economiza muito tempo).

informação relacionada