当前位置: 技术问答>linux和unix
unix 下统计文件的个数
来源: 互联网 发布时间:2016-08-31
本文导语: 还是这个问题: 我在一个文件夹下:有许多的LOG文件: log20100525-192536 log20100525-202552 log20100526-092516 ..... 格式是logYYYYmmdd-hhmmss 想统计一下每天的LOG 数是多少 就不知道怎么实现啊? | ls log*...
还是这个问题:
我在一个文件夹下:有许多的LOG文件:
log20100525-192536
log20100525-202552
log20100526-092516
.....
格式是logYYYYmmdd-hhmmss
想统计一下每天的LOG 数是多少
就不知道怎么实现啊?
我在一个文件夹下:有许多的LOG文件:
log20100525-192536
log20100525-202552
log20100526-092516
.....
格式是logYYYYmmdd-hhmmss
想统计一下每天的LOG 数是多少
就不知道怎么实现啊?
|
ls log* |awk '{print substr($NF,4,8)}'|sort |uniq -c
|
ls | sed 's/log(.*)-.*/1/' | sort | uniq -c
|
// 其中: mydir 是你要统计的日志目录
// 编译后,放在和mydir 同级目录下运行
#include
#include
#include
#include
int main()
{
char line[32];
char tmpline[32];
char buf[64];
int num = 0;
FILE *fp = NULL;
system("ls ./mydir > tmp.txt");
if (access("./tmp.txt",F_OK) == 0)
{
if((fp = fopen("./tmp.txt","r")) == NULL)
{
perror("open error");
return -1;
}
if(fgets(buf,sizeof(buf),fp))
{
num++;
strncpy(line,buf,11);
while(fgets(buf,sizeof(buf),fp))
{
strncpy(tmpline,buf,11);
if (strcmp(line,tmpline) == 0)
num++;
else
{
strcpy(line,tmpline);
printf("%s: %dn",line+3,num);
num = 1;
}
}
}
}
return 0;
}
// 编译后,放在和mydir 同级目录下运行
#include
#include
#include
#include
int main()
{
char line[32];
char tmpline[32];
char buf[64];
int num = 0;
FILE *fp = NULL;
system("ls ./mydir > tmp.txt");
if (access("./tmp.txt",F_OK) == 0)
{
if((fp = fopen("./tmp.txt","r")) == NULL)
{
perror("open error");
return -1;
}
if(fgets(buf,sizeof(buf),fp))
{
num++;
strncpy(line,buf,11);
while(fgets(buf,sizeof(buf),fp))
{
strncpy(tmpline,buf,11);
if (strcmp(line,tmpline) == 0)
num++;
else
{
strcpy(line,tmpline);
printf("%s: %dn",line+3,num);
num = 1;
}
}
}
}
return 0;
}