yae*_*ael 10 linux awk disk-usage perl shell-script
我们想计算我们得到的第一个数字 du
du -b /tmp/*
6 /tmp/216c6f99-6671-4865-b8bc-7205f5388752_resources
668669 /tmp/hadoop7887078727316788325.tmp
6 /tmp/hadoop-hdfs
42456 /tmp/hive
32786 /tmp/hsperfdata_hdfs
6 /tmp/hsperfdata_hive
32786 /tmp/hsperfdata_root
262244 /tmp/hsperfdata_yarn
Run Code Online (Sandbox Code Playgroud)
所以最后的总和将是
sum=6+668669+6+42456+32786+6+32786+262244
echo $sum
Run Code Online (Sandbox Code Playgroud)
我们如何通过 awk 或 perl one liners 做到这一点?
Ste*_*itt 18
在 AWK 中:
{ sum += $1 }
END { print sum }
Run Code Online (Sandbox Code Playgroud)
所以
du -b /tmp/* | awk '{ sum += $1 } END { print sum }'
Run Code Online (Sandbox Code Playgroud)
请注意,如果下/tmp
目录本身具有子目录,则结果将不正确,因为du
会生成目录及其子目录的运行总数。
du -s
将为您正确计算总和(在 中的所有子目录和文件上/tmp
,包括隐藏的):
du -sb /tmp
Run Code Online (Sandbox Code Playgroud)
并将du -c
正确计算列出的目录和文件的总和:
du -cb /tmp/*
Run Code Online (Sandbox Code Playgroud)
您还可以生成所选文件的总和du -c
。即使 的参数du
不是目录,这也有效,但情况不是du -s
:
$ du -sb file1 file2
17 file1
18 file2
$ du -cb file1 file2
17 file1
18 file2
35 total
Run Code Online (Sandbox Code Playgroud)
顺便说一句,对于交互式使用,我建议添加-h
选项而不是-b
块大小的任何其他乘数。这将以人类可读的单位格式打印尺寸。
$ du -ch file1 file2
4.0K file1
4.0K file2
8.0K total
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3104 次 |
最近记录: |