忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 1566 | 回复: 10

[文本处理] 急,求一条查询子文件夹的统计语句 [复制链接]

论坛徽章:
0
发表于 2017-07-03 19:12 |显示全部楼层

      查询一个磁盘某个子文件夹privite 下某天的日志多少MB,多少行,
        如    /data01/mobile/xx/x/private/access.20170501
               /data01/mobile/xx/x/public/access.20170501
               /data01/mobile/xx/x/private/access.20170501.mdok
               /data01/139ab/xxab/private/ng-access.20170501
               /data01/139ab/xxab/private/ng-access.20170501.mdok
   备注:每天会收集很多数据, 为了确保文件收集的完整性,文件结尾的*.mdok 表示access.20170501这个文件可以统计了。
    每天统计一次private这个文件夹下有多少个日志(条件是:当这个文件的mdok产生后,才可以统计),
     统计结果第一列是日志_日期(yyyymmdd),第二列是 多少MB  第三列是 有多少行
        想要的count.txt结果是(tab 键做分隔符):
                                 access.20170501   120MB   5000
                                 ng-access.20170501   1000MB  20000

论坛徽章:
112
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-07-03 23:18 |显示全部楼层
回复 1# wzltian

$ ls private/*.mdok | awk 'sub("[.]mdok$",""){cmd="wc -cl "$0;cmd | getline;close(cmd);sub(".*/","",$3);printf("%-20s %8s %10d\n",$3,int($2/1024**2)"M",$1)}'
access.20170501            4M     300000
ng-access.20170501       200M    1210550

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2017-07-04 09:17 |显示全部楼层
本帖最后由 关阴月飞 于 2017-07-04 10:50 编辑

wc -lc  privite/*.mdok   |awk 'sub(/.mdok$/,a){print $NF,$2/1024/1024"M",$1}'

论坛徽章:
0
发表于 2017-07-04 10:27 |显示全部楼层
回复 2# jason680

谢谢你,  不过我试了多次, 都是报这个错   ls: cannot access  的错误

论坛徽章:
0
发表于 2017-07-04 10:30 |显示全部楼层
回复 3# 关阴月飞

不好意思,   你这个也是错的,  报错类似  No such file or directory   ,还有一点就是,我是在/data01  这个目录下执行命令,不是在private下执行

论坛徽章:
0
发表于 2017-07-04 10:30 |显示全部楼层
回复 4# wzltian

还有一点就是,我是在/data01  这个目录下执行命令,不是在private下执行

论坛徽章:
38
辰龙
日期:2013-08-21 15:45:19寅虎
日期:2014-06-09 12:52:17双鱼座
日期:2014-06-10 12:42:44巨蟹座
日期:2014-06-12 23:17:17戌狗
日期:2014-06-17 09:53:29未羊
日期:2014-10-10 13:45:41申猴
日期:2015-03-03 17:21:37亥猪
日期:2015-03-03 17:22:002015亚冠之广州富力
日期:2015-05-12 16:34:522015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:08平安夜徽章
日期:2015-12-26 00:06:30
发表于 2017-07-04 10:46 |显示全部楼层
回复 6# wzltian
目录变了,你自己改一下就好了呀:
wc -lc  /data01/*.mdok   |awk 'sub(/.mdok$/,a){print $NF,$2/1024/1024"M",$1}'

论坛徽章:
0
发表于 2017-07-04 10:54 |显示全部楼层
回复 7# 关阴月飞

  试过多次,还是报  No such file or directory  这样的错误,不好意思是我没有说清楚, 因为磁盘下文件很多,我举例时,就举了几个例子没有把问题说青瓷,private是子文件夹,类似这样/data01/139ab/xxab/private/ng-access.20170501  的,或  data01/mobile/xx/x/private/access.20170501  类似这样的,我要统计的就是每日private下的文件有多少MB 和多少行。

论坛徽章:
112
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-07-04 10:54 |显示全部楼层
本帖最后由 jason680 于 2017-07-04 11:01 编辑

回复 4# wzltian

$ pwd
/tmp/data01

$ find . -type f
./mobile/xx/private/access.20170501
./mobile/xx/private/access.20170501.mdok
./mobile/xx/public/access.20170501
./139ab/xxab/private/ng-access.20170501
./139ab/xxab/private/ng-access.20170501.mdok

$ find . -name "*.mdok" -type f | awk '/private/{sub("[.]mdok$","");cmd="wc -cl "$0;cmd | getline;close(cmd);printf("%-20s %8s %10d\n",$3,int($2/1024**2)"M",$1)}'
./mobile/xx/private/access.20170501       4M     300000
./139ab/xxab/private/ng-access.20170501     200M    1210550

$ find . -name "*.mdok" -type f | awk '/private/{sub("[.]mdok$","");cmd="wc -cl "$0;cmd | getline;close(cmd);sub(".*/","",$3);printf("%-20s %8s %10d\n",$3,int($2/1024**2)"M",$1)}'
access.20170501            4M     300000
ng-access.20170501       200M    1210550



评分

参与人数 1信誉积分 +50 收起 理由
wzltian + 50 很给力!

查看全部评分

论坛徽章:
0
发表于 2017-07-04 10:55 |显示全部楼层
回复 8# wzltian

   不好意思打错字,不是“青瓷” 是清楚  /data01/mobile/xx/x/private/access.20170501(前面少了一个/)  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP