LINUX.ORG.RU
решено ФорумAdmin

bash и общий размер файлов.

 


0

3

дело такое: вытаскиваю список файлов, и могу смотреть их размер.
но он показывает для каждого файла в отдельности, а нужно всё вместе. как их сложить ?

find /backup -type f -mtime -14 | while read a; do du -sh "$a"; done | awk '{print $1}'
как сложить все значения оутпута.
надо ещё учесть, что некоторые в мегабайтах, а некоторые в гигабайтах.

★★★★★
$ find -type f -exec du -s {} \; | awk 'BEGIN{ s=0; }; {s+=$1}; END {print s}'

в мегабайты сам переводи, мне лениво

emulek
()
Ответ на: комментарий от derlafff

Спасибо!

# find /backup -type f -mtime -14 -print0 | xargs -0 du -csh | tail -n1
71G	total
dada ★★★★★
() автор топика
Ответ на: комментарий от derlafff

ты запускаешь du для каждого файла

я понял.
спасибо ещё раз.

dada ★★★★★
() автор топика
Ответ на: комментарий от anonymous

xargs может запустить du более одного раза.

sdio ★★★★★
()
Ответ на: комментарий от sdio
find . -type f -printf '%s\n' | perl -MMath::BigInt -e '$s=Math::BigInt->new();map{$s->badd($_)}grep(/\d/,split(/\D+/s,<STDIN>));print qq/$s\n/;'

Я, поминтся, достаточно давно пытался посчтать что-то целочисленное и явно большее 2G с помощью awk на 32-битной системе...

berrywizard ★★★★★
()
Ответ на: комментарий от berrywizard

Херня. Можно сразу делить на 1024, здесь же оценить надо, а не с точностью до байта посчитать.

А поизвращаться можно по-разному

$ (find . -type f -printf '%s + ' ; echo 0) | bc -l
10117567898

sdio ★★★★★
()
Ответ на: комментарий от sdio

А поизвращаться можно по-разному

Например так :)

find . -type f -printf '%s\n' | perl6 -e 'say [+] $*IN.lines;'

redgremlin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.