Если ваша версия find
имеет -printf
, вы можете найти это немного быстрее.
find dir1 ! -type d -printf "%s\n" | awk '{sum += $1} END{print sum}'
Существует как минимум два способа избежать научной нотации для вывода больших чисел в AWK.
END {OFMT = "%.0f"; print sum}
END {printf "%.0f\n", sum}
.0
усекает десятичные разряды, так как мы действительно имеем дело с целым числом, а gawk %d
, похоже, неправильно действует как %g
в версии 3.1.5 (но не 3.1.6 и более поздних). *
Однако из документации gawk
:
ПРИМЕЧАНИЕ. При использовании целочисленных букв управления форматами для значений
которые находятся вне диапазона самого широкого целочисленного типа C, gawk
переключается на спецификатор формата "% g".
Остерегайтесь превышения максимального целого числа для вашей системы / версии AWK.