Это команда, которую я использую, чтобы перечислить некоторые файлы:
find . -name \*.extract.sys -size +1000000c -exec ls -lrt {} \;
-rw-r--r-- 1 qa1wrk15 test 1265190 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_7.20110929.extract.sys
-rw-r--r-- 1 qa1wrk15 test 1345554 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_2.20110929.extract.sys
-rw-r--r-- 1 qa1wrk15 test 1370532 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_3.20110929.extract.sys
-rw-r--r-- 1 qa1wrk15 test 1399854 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_8.20110929.extract.sys
и так далее.
Теперь я хочу подсчитать общий размер этих файлов, суммируя 5-й столбец. Я подумал об использовании awk
, чтобы сделать это, поэтому я проверил следующее в определенном каталоге
>ls -lrt | awk `{ print $1 }`
ksh: syntax error at line 1 : `{' unmatched
Я не понимаю, в чем проблема, почему эта синтаксическая ошибка .
Я думаю попробовать
ls -lrt | awk `BEGIN {total = 0} {for(i=0;i<NR;i++){total+=$5}} END {printf "%d",total}
это тоже, но простой awk
скрипт не работает.
Пожалуйста, предложите или исправьте меня, если я ошибаюсь, или если для этого есть обходной путь.
источник
find . -name \*.extract.sys -size +1000000c -exec ls -lrt {} \; | awk '{ total += $5 }; END { print total }'
ls
!@enzotib уже указал, в чем ваша синтаксическая ошибка - я собираюсь немного коснуться.
Суммирование столбца чисел - одна из тех вещей, которая продолжает появляться. Я закончил с этой функцией оболочки:
С этим ваше решение становится:
Это суммирует числа в столбце 5 и выводит значение.
источник
.aliases
файл.Вот еще один способ сделать это с помощью
du
:источник
du -ch --files0-from=-
говорит мне, что мой общий "9.0G". Sweeeet!tail -1
.В случае, если HP-UX
find
также имеет-printf
опцию, было бы полезно составить формулу дляbc
расчета:Если формула становится слишком большой, ее можно рассчитать пошагово:
источник
С GNU
find
:С GNU
stat
:С BSD
stat
:источник
jq
утилита? Похоже, не найти в дистрибутиве Debian (Debian 4.9.51-1 (2017-09-28) x86_64 GNU / Linux)