Como somar iterativamente os tamanhos dos arquivos com determinadas extensões de arquivo?

Como somar iterativamente os tamanhos dos arquivos com determinadas extensões de arquivo?

Estou preso em descobrir como somar lso resultado da 5ª coluna com awk. Se eu adicionar $bytesum+=..., o programa obviamente quebra. Alguma ideia?

bytesum=0
for i in `cat fileextensions.txt | sort | uniq`
do
    ls -Rl "$folder" | grep $i | awk '{bytesum+=$5}; {print $9 " " $5}'
done

echo $bytesum

Responder1

Com o GNU, tudo que você precisa é:

find . -type f -printf '%s\n' | awk '{s+=$0} END{print s+0}'

Com qualquer descoberta:

find . -type f -exec stat -c '%s\n' {} \; | awk '{s+=$0} END{print s+0}'

Para apenas localizar e registrar arquivos com uma extensão específica em um diretório específico ("pasta" é um termo do Windows, na terminologia UNIX é um diretório), como parece que você está tentando fazer, seria:

dir='whatever'
ext='pdf'
find "$dir" -type f -name "*.${ext}" -printf '%s\n'

Responder2

Na festa:

for size in `du *.jpg | cut -f1`; do sum=$((sum+size)); done; echo $sum

Integre isso ao seu loop principal, alterando o .jpgno meu exemplo para uma variável adequada $ino seu script.

informação relacionada