linux编程一个目录有多少个文件,linux系统编程----统计一个目录下的普通文件个数...

主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能。

首先介绍一下函数原型:

打开一个空目录

DIR *opendir(const char *name);

参数: 目录名

返回值: 指向目录的指针

读目录

struct dirent *readdir(DIR *dirp);

参数: opendir的返回值

返回值: 指向目录的指针

关闭目录

int closedir(DIR *dirp);

代码实现:readfileNum.c

1 #include

2 #include

3 #include

4 #include

5 #include

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 }

效果展示:

687252

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值