内容大纲
1 情景说明:
某目录下存在大量以日期结尾的文件(如下图所示), 现在有以下几个需求
需求一: 统计出 2021-01-10 这一天所有的日志总大小
需求二: 分天统计出单日日志总大小
2 处理过程
2.1 需求一解决:
ll ./*.2021-01-10 | awk 'BEGIN{sum=0}{sum+=$5}END{print sum/1024/1024/1024"G"}'
2.2 需求二解决:
for t in ls |grep '.txt.' |awk -F '.txt.' '{print $2}'|sort -u
;do \
ls -l *.$t 2>/dev/null \
| awk 'BEGIN{sum=0}{sum+=$5;split($NF,aaa,".txt.")}END{if (sum >0){print (sum/1024/1024/1024)"G",aaa[2]}}' ;done
上述命令也可以拆解为以下形式, 方便理解 (可以正常运行)
for t in ls |grep '.txt.' |awk -F '.txt.' '{print $2}'|sort -u
do
ls -l *.$t 2>/dev/null | awk '
BEGIN{
sum=0
}
{
sum+=$5
split($NF,aaa,".txt.")
}
END{
if (sum >0)
print (sum/1024/1024/1024)"G",aaa[2]
}'
done;
附注: awk 中 split 函数的用法举例
split($NF;aaa;".txt.") 将最后一个字段以 ".txt." 分割, 并将各个段记录到数组aaa中