对不起!!!忍不住标题党了。
但是这个命令在我日常工作中使用频率真的太高了,我一定要分享出来。
对awk用得比较多的大佬嘛可以绕路了,这篇主要是给不了解awk的孩子们一个关于统计文件大小的实用小tips。
1.查看普通文件大小
首先,在Linux系统下,需要查看普通文件大小的时候我们一般会怎么做?
是不是用ll
命令显示所在目录下的文件信息,第五列就是对应文件的大小(用字节表示)。见下图:
或者用ll -h
命令以和文件字节大小相近的单位显示:
如果希望统一单位也可以使用--block-size
参数:
2.查看目录文件大小
但是,使用ll
命令是没有办法直接看到目录文件的大小的。如果需要查看目录大小,需要用du
:
3.使用awk命令统计指定文件的大小
现在如果我们要统计多个文件的大小怎么办,这多个文件不一定是某个目录下所有的文件,可能只是其中一部分的。我们需要把各个文件的大小找出来,然后进行累加得到最后的统计结果。这个时候,awk
就非常好使了。先看怎么用,再解释具体的用法规则。
例如,统计当前路径下20200811这天的所有文件(文件名包含日期)大小之和,数据单位用T表示。
ll | grep 20200811 | awk '{sum+=$5}END{print sum/(1024^4)}'
首先通过grep
命令筛选出符合条件的文件,然后使用累加操作,将第五列的值(也就是文件大小,单位为Byte)累加存入变量sum,最后将单位进行转换,打印最后的数值。
下面我贴了一些awk的使用说明,了解这些以后基本的操作应该是能看懂了。
3.1 awk动作
awk的常用动作是格式化输出print
和printf
, print 会在每次输出后自动换行,而如果使用 printf 动作,就必须在最后加入"\n"。awk
会根据空格和制表符,将每一行分成若干字段,依次用$1
、$2
、$3
代表第一个字段、第二个字段、第三个字段等等。另外,$0
代表当前行。
3.2 awk条件
awk
允许指定输出条件,只输出符合条件的行。输出条件要写在动作的前面。
条件类型 | 条 件 | 说 明 |
---|---|---|
awk保留字 | BEGIN | 在 awk 程序一开始,尚未读取任何数据之前执行。BEGIN 后的动作只在程序开始时执行一次 |
awk保留字 | END | 在 awk 程序处理完所有数据,即将结束时执行?END 后的动作只在程序结束时执行一次 |
关系运算符 | >、<、>=、<=、==、!= | |
A~B | 判断字符串 A 中是否包含能匹配 B 表达式的子字符串 | |
A!~B | 判断字符串 A 中是否不包含能匹配 B 表达式的子字符串 | |
正则表达式 | /正则/ | 在“//”中可以写入字符,则支持正则表达式 |