awk 查找目录中的某些文件

awk 查找目录中的某些文件

我有一个名为“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

相关内容