¿Cómo sumar iterativamente tamaños de archivos con extensiones de archivo determinadas?

¿Cómo sumar iterativamente tamaños de archivos con extensiones de archivo determinadas?

Estoy atascado en descubrir cómo sumar lsel resultado de la quinta columna con awk. Si agrego $bytesum+=...entonces el programa obviamente se rompe. ¿Algunas ideas?

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

Respuesta1

Con GNU encuentra todo lo que necesitas es:

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

Con cualquier hallazgo:

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

Simplemente buscar y almacenar archivos con una extensión específica en un directorio específico ("carpeta" es un término de Windows, en la terminología de UNIX es un directorio), como parece que podría estar intentando hacer, sería:

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

Respuesta2

En fiesta:

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

Integre esto en su bucle principal cambiando .jpgen mi ejemplo a una variable adecuada $ien su secuencia de comandos.

información relacionada