找回密码
 请使用中文注册

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

2023-5-6 08:57| 发布者: 开心| 查看: 29| 评论: 0

阅读字号:

摘要:   有时你可能想知道某个目录下文件的大小,此时自然会想到带有-l选项的ls命令。但是,这个命令除了文件名和文件大小之外,还要显示其他很多信息。因此,可以将这个ls命 ...
    
  有时你可能想知道某个目录下文件的大小,此时自然会想到带有-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

  如果想知道/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

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2026-1-13 17:13 , Processed in 0.170557 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部