$ awk 'BEGIN{printf "Total bytes: %\047d\n", 1088328265}'
Total bytes: 1,088,328,265
Итак, отбросив обычный совет не разбирать вывод ls и избавиться от grep, поскольку вам никогда не нужен grep при использовании awk, мы можем сделать всю вашу команду:
ls -lR | awk '!/^d/{bytes += $5} END{printf "Total bytes: %\047d\n", bytes}'
\047
- это способ представления одинарных кавычек в скрипте awk, разделенных одинарными кавычками, а затем из руководства по GNU awk :
Символ одинарных кавычек или апострофрасширение POSIX до ISO C. Это указывает на то, что целочисленная часть значения с плавающей запятой или вся часть целочисленного десятичного значения должна иметь символ разделителя тысяч.Это работает только в локалях, которые поддерживают такие символы.Например:
$ cat thousands.awk Show source program
-| BEGIN { printf "%'d\n", 1234567 }
$ LC_ALL=C gawk -f thousands.awk
-| 1234567 Results in "C" locale
$ LC_ALL=en_US.UTF-8 gawk -f thousands.awk
-| 1,234,567 Results in US English UTF locale
Для получения дополнительной информации о локалях и проблемах интернационализации см. Locales .