分析

编程实现对指定目录下的指定文件类型数量的统计。这里涉及到对目录文件的打开和对目录文件下的文件的遍历。

这里主要用的2个库函数,打开目录的 opendir函数,readdir函数。对这2个库函数不熟悉?请看man 3 readdir,man 3 opendir,非常详细。opendir函数 打开失败的时候 返回NULL ,errorno被设置,可以通过perror获取错误信息。readdir函数会遍历目录下的所有文件,注意是一个一个的返回,注意是读一次返回一次,返回的struct dirent 结构体指针,里面包含文件的类型、文件的名称、文件大小等 文件信息

opendir函数说明

readdir函数说明

实现代码

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
char* fileType = NULL;// [-,d,p,s,l,c,b] 转化为 对应的 文件类型
unsigned char GetFileType(char* type)
{if(strcmp(type,"b")==0){return DT_BLK;}else if(strcmp(type,"c")==0){return DT_CHR;}else if(strcmp(type,"d")==0){return DT_DIR;}else if(strcmp(type,"p")==0){return DT_FIFO;}else if(strcmp(type,"l")==0){return DT_LNK;}else if(strcmp(type,"-")==0){return DT_REG;}else if(strcmp(type,"s")==0){return DT_SOCK;}else{printf("文件类型输入错误,文件类型为[-,d,p,s,l,c,b]\n");exit(1);}}int GetFileNum(const char* path)
{int total = 0;DIR* dir = opendir(path);if(dir==NULL){perror("opendir error");exit(1);}struct dirent* dirObj = NULL;char* dirName = NULL;//循环读取目录下的文件while(dirObj = readdir(dir)){dirName = dirObj->d_name;if(strcmp(dirName,".")==0 || strcmp(dirName,"..")==0){continue;}if(dirObj->d_type == GetFileType(fileType) ){total++;}if(dirObj->d_type==DT_DIR){char temp[1024] = {0};sprintf(temp,"%s/%s",path,dirName);//碰到目录文件进行递归遍历total+= GetFileNum(temp);}}return total;
}
int main(int argc,int* argv[])
{if(argc<3){printf("./GetFileNum path fileType");exit(0);}char* path = argv[1];fileType = argv[2];int num = GetFileNum(path);printf("%s目录下有%s文件:%d\n",path,fileType,num);return 0;
}

运行结果

Linux系统编程:获取指定目录下指定文件类型的数量相关推荐

  1. shell统计指定目录下所有文件类型及数量

    #!/bin/bash #Synopsis:用于统计脚本当前所在目录或者用户指定目录下的所有文件类型及数量 #若直接运行脚本而不接任何命令行参数,则默认会统计脚本所在目录下的文件 #Date:2016 ...

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

    主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能. 首先介绍一下函数原型: 打开一个空目录 DIR *opendir(const char ...

  3. linux如何查看指定目录下文件内容,Linux 系统下通过关键词查找指定目录下的文件内容...

    #!/bin/bash # 作者:靑龍一笑(C.S.Ricen) # 功能:根据指定的关键词,查找指定目录下的文件内容 # 要查找的目录 Search_Dir=/opt/datas/ # 关键字列表 ...

  4. linux怎么在目录下查找文件,linux find-在指定目录下查找文件

    find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...

  5. php获取指定目录下所有文件列表,PHP 获取指定目录下所有文件(包含子目录)...

    set DestPath=.for /f "delims=" %%i in ('dir /ad /b ' ) do (copy %DestPath%\%%i\*.txt %Dest ...

  6. linux同步某台服务器,linux 两台服务器之间开机自动同步指定目录下的文件

    linux 两台服务器之间开机自动同步指定目录下的文件 服务器B(172.17.166.11)上开机或者重启会自动拉取服务器A(172.17.166.10)上指定目录下所有文件 1.创建服务器B到服务 ...

  7. Linux 删除指定目录下指定后缀名的所有文件

    删除指定目录下指定相同后缀名的所有文件,使用 rm 命令是无法直接删除的.所以通常是使用 find 命令找到指定目录下具有相同后缀名的所有文件,然后再利用 rm 进行删除.例如,删除 /root/ 目 ...

  8. Linux学习:读取目录内容 (目录名和类型)和递归统计指定目录下普通文件个数练习

    一.读取目录内容 #include <stdio.h> #include <unistd.h> #include <dirent.h> #include <s ...

  9. Linux 删除指定目录下的文件/删除文件

    文章目录 删除当前目录下的所有类型的文件 删除指定目录下的所有类型的文件 用 find 命令在当前目录下查找普通文件并删除 用 find 命令在指定目录下查找普通文件并删除 用 find 命令的处理动 ...

  10. php获取文件目录并打印,PHP遍历并打印指定目录下所有文件

    这篇文章主要介绍了PHP遍历并打印指定目录下所有文件的实例,需要的朋友可以参考下. //功能:遍历并打印指定目录下所有文件 function scan_dir($dir_name,$dir_flag= ...

最新文章

  1. 弄懂“进程”(上):3个组成部分、4个基本特征、4个基本状态
  2. windows消息队列。DispatchMessage。 PostMessage
  3. 旷视5号员工陈可卿:1991生于绍兴、10岁买电脑改变命运,信息奥赛金牌保送清华...
  4. 预告 | CSIG图像图形学科前沿讲习班:图神经网络
  5. pc网站和移动网站在同一服务器吗,机动都市阿尔法PC服和移动服互通吗
  6. 计算机随机数字excel,excel随机生成数字_随机不随意
  7. 谈谈我们的学习和我们的Blog
  8. Java之导入Excel 后端篇
  9. 拓端tecdat|R语言分布滞后线性和非线性模型(DLNM)分析空气污染(臭氧)、温度对死亡率时间序列数据的影响
  10. Unity DoTween
  11. PS 宏使用方法记录
  12. CentOS7 VMware虚拟机克隆 网卡无法启动问题解决
  13. 解决:Android中常见的热门标签的流式布局flowlayout不能wrap_content
  14. 系统激活成功仍显示水印,取消激活方法
  15. Android和OpenCV的学习绘制几何图形
  16. 战略规划,要这么做才对!
  17. kubernetes dashboard
  18. 服务器虚拟化课程总结,虚拟化与云计算课程总结报告
  19. 一个月的时间准备计算机三级数据库技术,够吗?
  20. ipad1安装xbmc及配置教程

热门文章

  1. 高效率编辑器 VIM-操作篇,非常适合 VIM 新手
  2. seo全攻略_SaaS 企业推广获客全攻略(2):如何做好企业官网?
  3. 省选+NOI 第五部分 高级数据结构
  4. NOI图论算法:二分图匹配
  5. 第16课 开灯关灯 《小学生C++趣味编程》
  6. nginx location 斜杠_【一点资讯】斜杠青年双·11买什么本最划算?光影精灵6让你做“多面娇娃” www.yidianzixun.com...
  7. xilinx7中管脚mrcc和srcc_Xilinx 7系列FPGA收发器架构之硬件设计指导(一)
  8. IDEA工作笔记-对.idea及.iml文件的理解
  9. linux losetup命令,losetup命令_Linux losetup 命令用法详解:设定与控制循环(loop)设备...
  10. html logo动画效果图,简单CSS3技巧实现的Logo动画