Как итеративно суммировать размеры файлов с заданными расширениями?

Как итеративно суммировать размеры файлов с заданными расширениями?

Я застрял, пытаясь понять, как суммировать lsрезультат 5-го столбца с awk. Если я прибавляю $bytesum+=..., то программа, очевидно, ломается. Есть идеи?

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

решение1

С GNU find вам понадобится всего лишь:

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

При любой находке:

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

Чтобы просто найти и получить статистику по файлам с определенным расширением в определенном каталоге («папка» — это термин Windows, в терминологии UNIX это каталог), как вы, возможно, пытаетесь сделать, нужно:

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

решение2

В Баше:

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

Интегрируйте это в свой основной цикл, изменив .jpgв моем примере на соответствующую переменную $iв вашем скрипте.

Связанный контент