我只是想用bash脚本添加文件的大小。
# ls -lh | awk '{print $5}' | tr "M" " "
59
292
34
55
90
78
78
53
57
105
26
8.6
8.3
38
74
937
48
到目前为止我做得很好,但是当我试图添加所有这些数字时
# for i in [`ls -lh | awk '{print $5}' | tr "M" " " `]; do sum=$(($sum+$i)); done
我收到以下错误。
-bash: +[: syntax error: operand expected (error token is "[")
请有人帮助我。
谢谢。
答案 0 :(得分:2)
ls
。它意味着人类,而不是脚本。请改用文件通配符find
。[]
来分隔列表 - 这既不允许也不必要。$( )
- 引用更少麻烦。以下是使用bash
和stat
执行此操作的方式:
sum=0
for file in * ; do
sum=$(( sum + $(stat -c%s "$file") ))
done
echo $sum
或find
和awk
:
find . -maxdepth 1 -type f -printf '%s\n' | awk '{sum += $1} END {print sum}'
答案 1 :(得分:2)
这个有点令人费解:
total=$( { stat -c '%s' * | tr '\n' '+'; echo 0; } | bc )
答案 2 :(得分:1)
ls -l | awk '{print $5}' | tr "M" " "| awk '{sum+=$1} END {print sum}'
答案 3 :(得分:1)
请不要介意,实际上ls -lh
它会自行计算总文件的大小。现在我想出来了。
# ls -lh
total 2.0G
答案 4 :(得分:1)
这也有效 - du
将使用-S
跳过子目录,使用-s
进行汇总,并使用-h
进行人类可读打印:
du -Ssh