суммировать все числа из «du»

Кажется, единственный способ использовать mbp - это изменить главный загрузочный раздел на УДАЛИТЬ EFI и перейти на устаревший MBP.

7
08.03.2019, 19:33
3 ответа

В AWK:

{ sum += $1 }
END { print sum }

Итак,

du -b /tmp/* | awk '{ sum += $1 } END { print sum }'

Обратите внимание, что результат будет неправильным, если каталоги в /tmpсами имеют подкаталоги, потому что duпроизводит промежуточные итоги по каталогам и их дочерним элементам.

du -sправильно рассчитает для вас сумму (по всем подкаталогам и файлам в /tmp, включая скрытые):

du -sb /tmp

и du -cтакже правильно вычислят сумму перечисленных каталогов и файлов:

du -cb /tmp/*
18
27.01.2020, 20:13

Это просто, вы можете использовать:

 du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'

Если вы не используете подстановочный знак, если вы используете имя каталога, такое как /tmp, вам нужно избегать последней записи, потому что вывод du -b /tmpпохож на:

size1 file1
size2 file2
size_total.

Так что теперь вам следует избегать этой последней записи, поэтому используйте:

du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'

Однако вы также можете использовать опцию -s, она рассчитает сводку за вас, после чего вам не нужно добавлять значения, просто распечатайте последнее, т.е.:

du -s directory
4
27.01.2020, 20:13

Вы также можете получить общую сумму выбранных файлов с помощью du -c. Это работает, даже если аргумент duне является каталогом, чего нельзя сказать оdu -s:

$ du -sb file1 file2
17  file1
18  file2

$ du -cb file1 file2
17  file1
18  file2
35  total

Кстати, для интерактивного использования я рекомендую добавить опцию -hвместо -bили любого другого множителя с размером блока -. Это напечатает размер в удобочитаемом формате единиц.

$ du -ch file1 file2
4.0K    file1
4.0K    file2
8.0K    total
7
27.01.2020, 20:13

Теги

Похожие вопросы