统计一个目录下所有普通文件的个数(包含子目录下的普通文件).
2017-06-12 21:28
274 查看
/************************************************************************* * File Name: file_cout.c * Author: lixiaogang * Function:统计普通文件个数 * Mail: 2412799512@qq.com * Created Time: 2017年06月12日 星期一 20时59分43秒 ************************************************************************/ #include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<dirent.h> #include<fcntl.h> #include<stdlib.h> #include<string.h> #include<unistd.h> int filesum = 0; void sys_err(const char *ptr,int num) { perror(ptr); exit(num); } void regFile(const char *path) { DIR *dir = opendir(path); if(NULL == dir) { sys_err("opendir",-2); } while(1) { struct dirent *dire = NULL; dire = readdir(dir); if(NULL == dire) { break; } /* 去掉.和.. */ if((strcmp(dire->d_name,".") == 0) || (strcmp(dire->d_name,"..") == 0)) { continue; } /*普通文件,累加计算*/ if(dire->d_type == DT_REG) { ++filesum; continue; } /*目录文件,继续向下遍历*/ if(dire->d_type == DT_DIR) { char buf[1024]; bzero(buf,sizeof(buf)); sprintf(buf,"%s/%s",path,dire->d_name); regFile(buf); } } closedir(dir); } int main(int argc,char *argv[]) { /* ./a.out dstfile */ if(argc != 2) { printf("Usage: ./a.out dstfil"); exit(-1); } const char *path = argv[1]; struct stat st; int flag = stat(path,&st); if(flag < 0) { sys_err("stat",-1); } if(S_ISREG(st.st_mode)) { ++filesum; return 0; } else if(S_ISDIR(st.st_mode)) { regFile(path); } printf("filesum = %d\n",filesum); return 0; }
相关文章推荐
- 采用多线程和生产者消费者模式来实现对于一个目录以及所有子目录下的文件内容的搜索,打印出包含指定关键字的行.
- 统计一个目录下所有普通文件的总行数
- 统计一个目录下所有普通文件的总行数
- 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 统计一个目录下所有普通文件的总行数
- 统计一个目录下所有普通文件的总行数
- 实例:把一个/oldboy目录及其子目录所有的扩展名.sh结尾的文件中包含oldboy的字符全部替换为beautiful
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- 统计目录(包含子目录)下所有word文档页码数
- touch一个目录及其下所有嵌套子目录中的文件
- linux系统中用一条命令 查找/data目录及子目录下 内容包含 “hello” 的所有文件名称 及 所在行数
- linux的一个find命令rm删除某目录下所有子目录 中的某类文件
- 统计当前目录下的所有文件目录大小,不显示子目录与子文件
- 如何touch一个目录及其下所有嵌套子目录中的文件?
- 记录1——loadrunner 浏览一个目录以及它的所有子目录直至浏览完到没有子目录为止(空目录或者文件)
- 在一个目录及其所有子目录下所有的文件中查找某个单词
- 如何获取一个目录下包含子目录内的所有文件名,并保存在一个数组中或XML文档里
- 删除所有svn文件(一个目录和其各级子目录下的) 两种方法
- 递归改进(在左侧树形不仅可以显示目录还可以显示跟要查询子目录统计的所有文件)
- 轮循遍历某个目录下所有文件包含子目录文件