Como posso calcular o tamanho total de um número extremamente grande de arquivos com uma extensão específica?

3

Eu tenho um diretório no Linux que contém um grande número de arquivos (dezenas de milhares), além de diretórios que podem conter milhares de arquivos também.

Em algum momento, o seguinte du comando falha com um erro "Argument list too long":

du -ch data/*.txt

Se eu canalizar pelo comando find, não obtenho o "total total",

find data/ -iname '*.txt' | xargs du -ch

    
por tmcallaghan 03.12.2012 / 17:41

1 resposta

4

Faça algo assim:

find data -iname '*.txt'  |xargs stat -c '%s' |awk '{total=total+$1}END{mbtotal = total / 1000000 ; print mbtotal}'

Basicamente, obtenha sua lista de arquivos usando find , obtenha o tamanho de cada hit usando stat (formatando a saída para exibir o tamanho) e, em seguida, use awk (no meu exemplo , dividindo por 1.000.000 para obter algo como megabytes; mude o denominador a seu critério).

Você também pode fazer um exercício semelhante em Perl ou qualquer idioma que deseje usar.

    
por 03.12.2012 / 17:54