Допустим, команда или скрипт отдаёт размер в байтах:
du -B1 /var/log/* | head
Вместо того чтобы подключать
awk и вручную делить значения на 1024, вывод можно сразу пропустить через numfmt:du -B1 /var/log/* | numfmt --field=1 --to=iec-i
--field=1 преобразует только первое поле каждой строки. Всё остальное остаётся на месте, поэтому numfmt удобно вставлять прямо в уже существующие пайпы.Причём преобразование работает и в обратную сторону — привычные размеры можно превратить в обычные числа:
printf '%s\n' 512Mi 2Gi |
numfmt --from=iec-i
Это удобно в shell-скриптах: на вход можно принимать понятные человеку 500Mi или 4Gi, а внутри работать уже с количеством байтов.
bytes=$(numfmt --from=iec-i <<< "4Gi")
echo "$bytes"
🔥
numfmt позволяет выкинуть из shell-скриптов самодельные конвертеры размеров: он понимает единицы, умеет работать с отдельными полями и встраивается в обычные Linux-пайпы.🚪 Linux Ready | #совет
