迅维网

Linux中利用awk命令计算文件的大小(上)

ptmanager 2017-10-13 08:50


Linux中利用awk命令计算文件的大小(上)

  有时你可能想知道某个目录下文件的大小,此时自然会想到带有-l选项的ls命令。但是,这个命令除了文件名和文件大小之外,还要显示其他很多信息。因此,可以将这个ls命令的结果通过管道送给awk命令作进一步的处理。运用组合命令显示/boot目录中每一个文件的文件名和大小:

goddog@ubuntu:~$ ls -lF /boot | awk '{ print $9 " " $5}'
abi-4.10.0-19-generic 1433520
config-4.10.0-19-generic 206872
……
  看上去有些凌乱啊。为了使awk命令的显示结果更清晰,在awk命令中引入了以下两个可以在print命令表达式中运用的特殊的字符序列:

  • \n: 产生一个回车操作

  • \t: 产生一个制表键

  利用 \t 重新修改一下上面的例子,这次是文件大小在前,文件名随后,文件大小和文件名由制表键隔开:
goddog@ubuntu:~$ ls -lF /boot | awk '{print $5 "\t" $9}'
1433520 abi-4.10.0-19-generic
206872 config-4.10.0-19-generic
……
  上述的显示结果是没有顺序的,如果你想了解文件磁盘空间的运用情况,最关心的就是大文件,因为只有大文件才对系统的冲击比较大。假设你现在想知道最大的3个文件的大小并且显示的结果是按文件由大到小的顺序列出。命令如下:其中sort命令中的-r表示由大到小排序,-n表示按数字排序:

goddog@ubuntu:~$ ls -lF /boot | awk '{ print $5 "\t" $9}' | sort -rn | head -3
41306042 initrd.img-4.10.0-19-generic
7035296 vmlinuz-4.10.0-19-generic
2937260 System.map-4.10.0-19-generic


Linux中利用awk命令计算文件的大小(上)

  如果想知道/boot中所有文件大小的总和,可以在awk命令中加入带有变量和加法的表达式,命令如下:其中, totalsize是自定义的一个储存文件大小总和的变量。awk命令中的命令表达式 totalsize = totalsize + $5 也可以缩写成 totalsize += $5

goddog@ubuntu:~$ ls -lF /boot | awk '{ totalsize = totalsize + $5; print totalsize }'
0
1433520
……
53475010
  结果除了显示最后一行的所有文件大小的总和之外,还显示了太多不重要的信息,为此,将这个命令的结果通过管道送给tail -1命令:
goddog@ubuntu:~$ ls -lF /boot | awk '{ totalsize += $5; print totalsize }' | tail -1
53475010
  还有一种更好的方式是在awk命令中运用END关键字,命令如下:
goddog@ubuntu:~$ ls -lF /boot | awk '{ totalsize += $5} END { print totalsize }'
53475010




雷人

握手

鲜花

鸡蛋

路过
收藏
来自: 今日头条
返回顶部
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索