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类关心的是磁盘上文件的存 ...
随机推荐
- 16进制色值转换成RGB
#51147f 转换成RGB ,5*16+1 ,1*16+4,7*16+15 #A9A9A9 转换成RGB ,A*16+9 ,A*16+9,A*16+9
- 【转】【C#】C#重绘windows窗体标题栏和边框
摘要 windows桌面应用程序都有标准的标题栏和边框,大部分程序也默认使用这些样式,一些对视觉效果要求较高的程序,如QQ, MSN,迅雷等聊天工具的样式则与传统的windows程序大不相同,其中迅雷 ...
- 微软职位内部推荐-Software Development Engineer 2
微软近期Open的职位: SDE II Organization Summary: Engineering, Customer interactions & Online (ECO) is l ...
- [android界面]android中src和background区别——前景与背景
ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸.src是图片内容(前 ...
- 小程序基础02:全局配置app.json
1.配置 我们使用app.json文件来对来微信小程序进行全局配置. 作用:他决定了页面文件的路径,窗口表现,设置网络超时时间,设置多tab等 每一个小程序页面也可以使用 .json 文件来对本页面的 ...
- Spring的BeanPostProcesser接口介绍
前言 废话不多说,直接进入主题. 同学们有想过这么一种情况吗:Spring容器提供给我们的一些接口实现类并不能满足我们的要求,但是我们又不想重新写一个类,只想在原来类上修改一些属性? 举个例子,Spr ...
- 浅谈JS事件冒泡
今天要跟大家谈的是事件冒泡,这个事件呢,也是两面性的,有时候给我们带来bug,有时候优点也很明显.我们就一起来看看它的真面目. 首先看看事件冒泡是什么? 事件冒泡 :当一个元素接收到事件的时候 会把 ...
- ASP.NET MVC5 插件化机制简单实现
一.前言 nopCommerce的插件机制的核心是使用BuildManager.AddReferencedAssembly将使用Assembly.Load加载的插件程序集添加到应用程序域的引用中.具体 ...
- EventBus框架在Android多Pane(Fragment)中的应用
通常多pane的设计中,比如Fragment A是个Headline,Fragement B是detail,那么B通常需要实现A的点击事件的接口,这样子的话,两个fragment就高耦合了,而且需要在 ...
- libtool: Version mismatch error 解决
在编译一个软件的时候,在 ./configure 和 make 之后可能会出现如下错误: libtool: Version mismatch error. This is libtool 2.4. ...