我有一个名为“directory1”的目录,其中包含文件:file1、file2、file3,这些文件已在变量“files”中传递。 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
您可以通过多种方式做到这一点:
首先切换到该目录,然后从那里运行命令+关闭 glob 扩展,因为 $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