Это двухэтапный процесс. Сначала найдите использование диска каждым файлом, а затем вычислите значения.
Для первого du
явно мой любимый.
find /usr/bin -type f -exec du '{}' '+'
Это будет искать в любом файле (-type f
) и добавлять ('+'
) его имя файла ('{}'
) к вызову (-exec
) du
.
Результатом будет разделенный табуляцией список использования (в блоках IIRC) и имени файла.
Теперь идет вторая часть (здесь для среднего). Этот список мы собираемся подать в awk
и позволить ему суммировать и делить на количество строк
{ sum = $1 } END { print "avg: " sum/NR }
Первый блок будет выполняться каждую строку и добавит значение первого (разделенного табуляцией) столбца к переменной sum
. Другой блок имеет префикс END
, означающий, что он будет выполнен, когда stdin - EOF. NR
- это специальная переменная, обозначающая количество строк.
Итак, готовая команда выглядит так:
find /usr/bin -type f -exec du '{}' '+' | awk '{ sum += $1 } END { print "Avg: " sum/NR }'
Теперь прочитайте о find
, awk
и конвейерах оболочки. Эти вещи значительно облегчат вашу жизнь, когда вам придется иметь дело с оболочкой Linux. Также полезны базовые знания о линейной буферизации и стандартных потоках ввода-вывода.