linux系统编程----统计一个目录下的普通文件个数
主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能。
首先介绍一下函数原型:
打开一个空目录
DIR *opendir(const char *name);
参数: 目录名
返回值: 指向目录的指针
读目录
struct dirent *readdir(DIR *dirp);
参数: opendir的返回值
返回值: 指向目录的指针
关闭目录
int closedir(DIR *dirp);
代码实现:readfileNum.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <dirent.h>
5 #include <sys/types.h>
6
7
8 int get_file_num(char* root)
9 {
10 int total = 0;
11 DIR* dir = NULL;
12 // 打开目录
13 dir = opendir(root);
14 // www.qixoo.qixoo.com 循环从目录中读文件
15
16 char path[1024];
17 // 定义记录目录指针
18 struct dirent* ptr = NULL;
19 while( (ptr = readdir(dir)) != NULL)
20 {
21 // 跳过. 和 ..
22 if(strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0)
23 {
24 continue;
25 }
26 // 判断是不是目录
27 if(ptr->d_type == DT_DIR)
28 {
29 sprintf(path, "%s/%s", root, ptr->d_name);
30 // 递归读目录
31 total += get_file_num(path);
32 }
33 // 如果是普通文件
34 if(ptr->d_type == DT_REG)
35 {
36 total ++;
37 }
38 }
39 closedir(dir);
40 return total;
41 }
42
43 int main(int argc, char* argv[])
44 {
45 if(argc < 2)
46 {
47 printf("./a.out path");
48 exit(1);
49 }
50
51 int total = get_file_num(argv[1]);
52 printf("%s has regfile number: %d\n", argv[1], total);
53 return 0;
54 }
效果展示:

linux系统编程----统计一个目录下的普通文件个数的更多相关文章
- Linux Shell删除某一个目录下的所有文件夹(保留其他文件)
#!/bin/bash direc=$(pwd) for dir2del in $direc/* ; do if [ -d $dir2del ]; then rm -rf $dir2del fi do ...
- Linux递归解压缩一个目录下的全部文件
gunzip -r hongchangfirst/data 怎样递归删除那些剩余的非log结尾的文件? 先列出确认一下: find hongchangfirst/data -type f ! -nam ...
- linux面试题:删除一个目录下的所有文件,但保留一个指定文件
面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 十个文件 [root@oldboy xx]# touch ...
- Linux:删除一个目录下的所有文件,但保留一个指定文件
面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 十个文件 [root@oldboy xx]# touc ...
- linux-删除一个目录下的所有文件,但保留某个或者多个指定文件
Linux:删除一个目录下的所有文件,但保留一个指定文件 面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 ...
- Python读取一个目录下的所有文件
#!/usr/bin/python # -*- coding:utf8 -*- import os allFileNum = 0 def printPath(level, path): global ...
- Python:遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序
编写了一个遍历一个目录下所有的文件及文件夹,然后计算每个文件的字符和line的小程序,先把程序贴出来. #coding=utf-8 ''' Created on 2014年7月14日 @author: ...
- python 删除一个目录下的所有文件
一个目录下有文件,文件夹,文件夹里又有文件.文件夹....用python脚本,实现,递归删除一个目录下的所有文件: 目录结构如下: 其中我们要删除所有文件 代码实现如下: import os CUR_ ...
- Java遍历一个目录下的所有文件
Java遍历一个目录下的所有文件 Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其他流类不同的是,流类关心的是文件的内容,而File类关心的是磁盘上文件的存 ...
随机推荐
- 11Mybatis_mybatis开发Dao的方法
在介绍开发Dao的方法之前先介绍下SqlSession. 1.先介绍一下SqlSessionFactoryBuilder:通过SqlSessionFactoryBuilder创建会话工厂SqlSess ...
- iBatis.Net实现返回DataTable和DataSet对象
如题.要返回一个ADO.NET对象好像没有使用ORM的必要,而且从编程的角度看这样的实现一点也不OO,但是实际的开发场景中还是会碰到这种需求的.下面我就借鉴前人的经验,结合实际的示例,再总结一下.如果 ...
- main函数中argc和argv含义
在main函数中经常可以看到int main(int argc, char ** argv)的函数头,这里的形参int argc, char ** argv究竟是啥含义呢? &1 int ar ...
- IT应届生如何准备找工作?
今天和一个弟弟吃饭,他明年年初即将计算机研究生毕业.谈论到怎么找工作,觉得自己会的不多,心里非常发虚.虽然我当年找工作也走了很多弯路,思路并不是很清晰.但是工作了这么多年,对企业需要什么样子的人还是有 ...
- memcached 适用的场景
最近在看 memcached 的公共课,发现memcache的确是个好东西,可以显著地减小数据库负载,当然我们要搞清楚,任何一样技术都有它的优缺点, 在使用它的时候,搞清楚它的适用场景,才能扬长避短 ...
- 怎样写 OpenStack Neutron 的 Extension (二)
接着之前一篇文章,再来谈谈 Extension 的具体实现问题.我使用的是本地数据库加远程API调用的方法,所以先要定义一下数据库中 myextension 如何存储.首先,我们可以在自己的 plug ...
- [bzoj 2151]种树(贪心)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2151 分析:原型是bzoj 1150(CTSC 2007) 首先DP无法下手,想到贪心.想到贪 ...
- android之简易新闻客户端
将一个新闻信息保存到一个XML文件中,并将放在服务器下.通过手机客户端来从服务器下载该文件并解析显示. news.xml <?xml version="1.0" encodi ...
- 第二十五课:jQuery.event.trigger的源码解读
本课主要来讲解jQuery.event.trigger的源码解读. trigger = function(event, data, elem, onlyHandlers){ if(elem & ...
- ios-遍历和排序
// // main.m // OC-遍历和排序-homework // // Created by dllo on 16/2/25. // Copyright © 2016年 dllo. All r ...