2016-08-13 2 views
1

Конечно, find -exec позволяет мне использоваться stat, чтобы получить размер файла, и маленький Python один лайнер просуммировать, что:Расчет размера списка файлов без использования поиска/-exec

find . -name "*.sh" -exec stat -f '%z' {} \; | python -c'import sys; print sum(int(x) for x in sys.stdin)'

Может быть, использование bc, я думаю, чтобы сделать это более похожим на bash.

Однако, (вопрос), у меня уже есть список файлов, find -exec отсутствует. Как я могу и элегантно получить размеры файлов в трубе. Я мог бы использовать конвейер xargs и du|cut, но, несмотря на -s на xargs, я рискую взорвать длину команды или перераспределить ее до мелочей гигабайт.

Я надеюсь на то, что может рассчитать использование диска и сделать это в стандартном в центрической образом:

cat myList.txt -exec stat -f '%z' {} \; | python -c'import sys; print sum(int(x) for x in sys.stdin)'

Cat не имеет -exec хотя :-(

ответ

2

Вы можете использовать трубу с xargs du и awk:

xargs -a file.list du -b | awk '{t+=$1}END{print t}' 

Это дает вам накопленный размер в байт.

+0

В этой конфигурации у xargs есть верхний предел длины команды? Я имею в виду - вместо того, чтобы xargs вытащить из стандарта. Я должен был сказать это раньше, но я нахожусь на Mac, и это, к сожалению, не имеет опции -a. –

+0

Параметр '-a' не влияет на максимальную длину команды. – hek2mgl

Смежные вопросы