最近在linux下要干点和c语言相关的任务,其中涉及使用C语言查找一个文件夹下指定扩展名的所有文件,我去开始在网上查找后粘贴后不能用,最后发现是windows下才能使用。最后找到了一篇不错的文章,https://www.cnblogs.com/fnlingnzb-learner/p/6472391.html 这个是遍历当前目录下所有文件及其子文件夹,但是不太符合我的需求,我只需遍历当前目录就可,子目录不用管,我在他的基础上做了些修改方便自己使用。下面贴出具体代码:

#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
#include "string.h"
#include "dirent.h"//#########################################################//
int GetFileNamesInDir(char *DirPath,char *FileExtName,char FileNames[][128],int *FileNum,int MaxFileNum)
{DIR *dir;struct dirent *ptr;if ((dir=opendir(DirPath)) == NULL){perror("Open dir error...");exit(1);}char *CurFileExtName = NULL;while ((ptr=readdir(dir)) != NULL){if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dircontinue;//跳过.和..目录else if(ptr->d_type == 8)    ///d_type=8对应file{  CurFileExtName = rindex(ptr->d_name, '.');//char *rindex(const char *s, int c);rindex()用来找出参数s 字符串中最后一个出现的参数c 地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串一部分。if(CurFileExtName!=NULL&& strcmp(CurFileExtName,FileExtName) == 0){  if(*FileNum<MaxFileNum){memcpy(FileNames[(*FileNum)++],ptr->d_name,sizeof(ptr->d_name)); //printf("CurFilePath=%s/%s\n",DirPath,ptr->d_name);}}     }     }closedir(dir);return 1;
}
//#########################################################//int main(void)
{char *DirPath="./MyIms";char *FileExtName=".jpg";char FileNames[1000][128];int MaxFileNum=1000;int FileNum=0;GetFileNamesInDir(DirPath,FileExtName,FileNames,&FileNum,MaxFileNum);printf("########Find include %s suffix FileNum=%d########\n",FileExtName,FileNum);for(int i=0;i<FileNum;i++){printf("CurFilePath=%s/%s\n",DirPath,FileNames[i]);} }

我的示例文件夹如下:

编译一下程序: gcc -o Test GetFileNamesInDir.c

然后在执行:./Test

Linux下使用C语言查找一个文件夹下指定扩展名的所有文件相关推荐

  1. 鼠标右键 移动选定的文件夹到指定位置_鼠标拖动文件是复制还是移动?——拖动文件技巧大全...

    用鼠标拖动文件可以实现文件的移动.复制甚至是删除的操作,你相信吗?如果相信,说明你已经掌握了这些方法,如果不信,请接着往下看. 拖动文件的手法有:左键拖动.右键拖动.按下Ctrl键并拖动.按下Shif ...

  2. window7设置文件夹选项——显示文件扩展名

    公司给我们换了新电脑,由神舟换成联想,公司的几台神舟均先后出现问题,故被同事命名为:神舟垃圾. 联想本机安装的就是家庭版window7,已经花了一天一晚都没整好. sqlserver2005,orac ...

  3. 头文件(include)、源文件(src)、main函数(自定义文件夹)三者在三个不同文件夹的实现,exe独立生成文件夹(bin)

    最近想要实现头文件.源文件.main函数三者在三个不同文件夹的实现,查找了很多博客,对tasks.json,  launch.json,  c_cpp_properties.json相关配置优良进一步 ...

  4. 计算机一级改扩展名,如果改变文件扩展名 修改教程分享【图解】

    导读:我们在使用电脑的过程当中,经常需要新建文件夹,文件夹的种类有很多,它的后缀不同,那么这个文件夹的类型就不同,当我们已经新建号一个文件夹以后,不想使用此类型的文件,当我们对文件夹的后缀进行修改的过 ...

  5. 文件格式和扩展名不匹配.文件可能已损坏_自媒体良器:音频文件批处理,FFmpeg一行搞定!果断收藏...

    引言 FFMpeg 是众多多媒体应用程序的核心,但该程序本身不具备一次转换多个文件的能力. 但也拦不住,FFMpeg 本身是命令行程序,可编写脚本,借助 Bash 轻松快速地构建自动化程序. 1 - ...

  6. 计算机考试设置显示所有文件和文件夹,2010年职称计算机考试:文件夹选项的设置...

    在 "我的电脑" 窗口选择 "工具" 菜单中的"文件夹选项"命令,会弹出一个"文件夹选项"对话框. 另外,在控制面板的分 ...

  7. linux替换某个文件夹下所有文件,Linux 批量查找并替换文件夹下所有文件的内容...

    1.批量查找某个目下文件的包含的内容 cd etc grep -rn "查找的内容" ./ 2.批量替换某个目下所有包含的文件的内容 cd etc sed -i "s/查 ...

  8. 中查询一个文件夹下文件数量_如何在 Bash 中使用循环 | Linux 中国

    使用循环和查找命令批量自动对多个文件进行一系列的操作.-- Seth Kenlon(作者) 人们希望学习批处理命令的一个普遍原因是要得到批处理强大的功能.如果你希望批量的对文件执行一些指令,构造一个可 ...

  9. linux给文件夹下所有文件授权,Linux 如何将一个文件夹的所有内容授权给某一个用户...

    我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有roo ...

最新文章

  1. Python天气预报数据获取脚本
  2. 转工厂方法模式-想吃什么汉堡自己要
  3. 直播预告 | 中国工程院院刊:信息与电子工程领域青年学术前沿论坛
  4. C++中vector使用详细说明 (转)
  5. 贾跃亭致信债权人:将努力打工还债,请相信我!
  6. python为什么需要编辑器_Python是个什么鬼?为什么设计大牛都在学它?!
  7. 学汉语、来云栖、海外布道阿里云……这位印度架构师不一般
  8. 中国1,3丁二醇市场趋势报告、技术动态创新及市场预测
  9. win7服务器 能否建立多个网站,windows7下weblogic10.3服务器下一个domain建多个server(端口)...
  10. RSTP比STP快在哪?
  11. Sencha touch 开发系列:容器组件:tabpanel,carousels
  12. BZOJ4259 残缺的字符串 【fft】
  13. 三星note9刷Android9,三星Note9国行安卓9固件rom刷机包CHC-N9600ZCS1CSD1四件套
  14. mac的截图命令screencapture
  15. 使用 Infiniband 实现 RDMA !IB卡介绍!下载IB 驱动 !lspci | grep Mell 查看 IB卡!
  16. foobar2000_备份Foobar2000并将其传输到新计算机
  17. 解决tensorflow2.x中使用tf.contrib.slim包时出现的No module named:tensorflow.contrib 问题
  18. starbound服务器无响应,星界边境无法开始游戏解决方法
  19. Spring Cloud Alibaba#01.开篇立题
  20. 使用showdown.js将Markdown文档转换为HTML

热门文章

  1. 企业VIP邮箱一天发信量,什么邮箱发信没有限制上限?
  2. 修改PPT输出图片的DPI值(分辨率)
  3. php开发app步骤,利用PHP后台接口开发App教程2
  4. 耐磨性在微型导轨中的性能分析
  5. 入门createjs———EaselJS模块基本介绍
  6. Flash--椭圆工具的使用
  7. 提升App用户活跃度的5个小技巧
  8. java list对象排序_Java 对象集合List排序的5种方式
  9. websocket连接及心跳检测
  10. 联想拆机+加装内存条+加装固态硬盘