변수 "files"에 전달된 file1, file2, file3 파일을 포함하는 "directory1"이라는 디렉터리가 있습니다. echo $files의 출력은 다음과 같습니다: file1 file2 file3. 크기의 합을 원하지만 아래 코드는 하나의 파일에만 작동합니다. 모든 파일에서 작동하게 하려면 어떻게 해야 합니까?
ls -l ./$dir/$files | awk '{t+=$5}END{print t}'
답변1
루프를 사용하여 파일 크기를 바이트 단위로 인쇄하고 stat
출력을 합산할 수 있습니다 awk
.
for i in $files; do
stat -c '%s' "$dir/$i"
done | awk '{t+=$1}END{print t}'
답변2
다음과 같은 다양한 방법으로 이 작업을 수행할 수 있습니다.
먼저 해당 디렉토리로 변경하고 거기에서 명령을 실행하고 $file이 이미 발견되었으므로 전역 확장을 끄십시오.
cd "$dir" ;set -f
stat -c '%s' $files | paste -sd+ | bc -l
du --apparent-size -abc $files | tail -n 1
perl -E '$s += -s for @ARGV;say $s' $files