Estoy atascado en descubrir cómo sumar ls
el 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 .jpg
en mi ejemplo a una variable adecuada $i
en su secuencia de comandos.