Oto polecenie, którego używam do wyświetlenia niektórych plików:
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
i tak dalej.
Teraz chcę obliczyć całkowity rozmiar tych plików, sumując piątą kolumnę. Pomyślałem o użyciu awk
, aby to zrobić, dlatego przetestowałem następujące elementy w określonym katalogu
>ls -lrt | awk `{ print $1 }`
ksh: syntax error at line 1 : `{' unmatched
Nie rozumiem, na czym polega problem, dlaczego ten błąd składniowy .
Zastanawiam się, aby spróbować
ls -lrt | awk `BEGIN {total = 0} {for(i=0;i<NR;i++){total+=$5}} END {printf "%d",total}
to także, ale prosty awk
skrypt nie działa.
Proszę zasugerować lub poprawić mnie, jeśli się mylę, lub jeśli istnieje obejście tego problemu.
źródło
find . -name \*.extract.sys -size +1000000c -exec ls -lrt {} \; | awk '{ total += $5 }; END { print total }'
ls
!@enzotib już wskazał, jaki jest twój błąd składniowy - idę na małą styczną.
Sumowanie kolumny liczb jest jedną z tych rzeczy, które wciąż się pojawiają. Skończyłem z tą funkcją powłoki:
Dzięki temu Twoje rozwiązanie staje się:
To zsumuje liczby w kolumnie 5 i wydrukuje wartość.
źródło
.aliases
pliku.Oto inny sposób, aby to zrobić za pomocą
du
:źródło
du -ch --files0-from=-
mówi mi, że moja suma to „9.0G”. Sweeeet!tail -1
.W przypadku, gdy HP-UX
find
ma również-printf
opcję, przydatne byłoby skomponowanie formułybc
do obliczenia:Jeśli formuła staje się zbyt duża, można ją obliczyć krok po kroku:
źródło
Z GNU
find
:Z GNU
stat
:Z BSD
stat
:źródło
jq
narzędzie? Wydaje się, że nie można go znaleźć w dystrybucji Debian (Debian 4.9.51-1 (28.09.2017) x86_64 GNU / Linux)