의 파일 목록이 주어지면 다음 files.txt
과 같이 크기 목록을 얻을 수 있습니다.
cat files.txt | xargs ls -l | cut -c 23-30
다음과 같은 것을 생성합니다 :
151552
319488
1536000
225280
그 숫자 의 합계 를 어떻게 구할 수 있습니까?
답변
... | paste -sd+ - | bc
내가 찾은 가장 짧은 것입니다 ( UNIX Command Line 블로그에서).
편집 :-
@Dogbert와 @Owen 덕분에 이식성 에 대한 인수가 추가되었습니다 .
답변
간다
cat files.txt | xargs ls -l | cut -c 23-30 |
awk '{total = total + $1}END{print total}'
답변
ls -l 출력에서 파일 크기를 가져 오기 위해 cut 을 사용하는 대신 직접 사용할 수 있습니다.
$ cat files.txt | xargs ls -l | awk '{total += $5} END {print "Total:", total, "bytes"}'
Awk는 “$ 5″를 다섯 번째 열로 해석합니다. 파일 크기를 제공하는 ls -l 의 열입니다 .
답변
파일 이름에 공백이 있으면 고양이가 작동하지 않습니다. 여기에 perl one-liner가 있습니다.
perl -nle 'chomp; $x+=(stat($_))[7]; END{print $x}' files.txt
답변
python3 -c"import os; print(sum(os.path.getsize(f) for f in open('files.txt').read().split()))"
또는 숫자를 합산하려면 다음으로 파이프하십시오.
python3 -c"import sys; print(sum(int(x) for x in sys.stdin))"