如何迭代地求出给定文件扩展名的文件大小之和?

如何迭代地求出给定文件扩展名的文件大小之和?

我一直在思考如何将ls第五列结果与求和awk。如果我添加的$bytesum+=...话,程序显然会崩溃。有任何想法吗?

bytesum=0
for i in `cat fileextensions.txt | sort | uniq`
do
    ls -Rl "$folder" | grep $i | awk '{bytesum+=$5}; {print $9 " " $5}'
done

echo $bytesum

答案1

使用 GNU 发现您所需要的只是:

find . -type f -printf '%s\n' | awk '{s+=$0} END{print s+0}'

任何发现:

find . -type f -exec stat -c '%s\n' {} \; | awk '{s+=$0} END{print s+0}'

要在特定目录(“文件夹”是一个 Windows 术语,在 UNIX 术语中它是一个目录)中查找并统计具有特定扩展名的文件,您可能会尝试执行以下操作:

dir='whatever'
ext='pdf'
find "$dir" -type f -name "*.${ext}" -printf '%s\n'

答案2

在bash中:

for size in `du *.jpg | cut -f1`; do sum=$((sum+size)); done; echo $sum

将其集成到您的主循环中,将我的示例中的 更改为脚本中的.jpg适当变量。$i

相关内容