用Shell脚本编写对若干文件的大小求和

求指点:怎样用Shell编写一个以若干文件名作为运行参数的脚本,脚本功能是对这些文件的大小求和。

该回答引用ChatGPT

编写一个shell脚本来计算文件名参数所指定文件的大小总和:
shell

#!/bin/bash

sum=0
for file in "$@" 
do
    if [ -f "$file" ]
    then
        size=$(stat -c%s "$file")
        sum=$((sum+size))
        echo "$file size: $size"
    else 
        echo "$file is not a file!"
    fi
done

echo "Total size: $sum"

然后给予该脚本可执行权限:
shell

chmod +x script.sh

然后可以这样运行该脚本:
shell

./script.sh file1.txt file2.mp4 file3.jpg

该脚本会:

  1. 定义sum变量用于记录总大小,初始化为0。
  2. 循环遍历所有文件名参数$@,对每个文件:
  • 检查是否为普通文件,如果是则继续,否则打印错误提示。
  • 使用stat命令获取文件大小,存储在size变量。
  • 将size大小加到sum总和。
  • 打印文件大小信息。
  1. 循环结束后,打印总大小sum。
  2. 如果文件名参数包含目录或其他非普通文件类型,会跳过并提示错误。