您的位置:首页 > 运维架构 > Linux

【Linux C】遍历文件夹下的某种类型的文件

2016-05-18 22:39 471 查看

实现思路

这里用到的是通过获取ls命令的执行结果,然后再过滤格式

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define LEN_FILE_NAME 64
#define LEN_COMMAND 32

#define FOLDER_NAME "./folder/"

#define FILE_FORMAT_TXT ".txt"
#define FILE_FORMAT_MP3 ".mp3"
#define FILE_FORMAT_MP4 ".mp4"

static bool fgFindFile = false;

void file_filter(const char * fileName, const char * format)
{
if(NULL == strstr(fileName, format))
{
return;
}

printf("Get File Name : %s", fileName);
fgFindFile = true;
}

void get_system_cmd(char * cmd)
{
char command[LEN_COMMAND] = {0};

strcpy(command, "ls ");
strcat(command, FOLDER_NAME);
strcat(command, "\0");

memcpy(cmd, command, strlen(command));
}

void main(int argc, char * argv[])
{
FILE *fp;
char readFileName[LEN_FILE_NAME] = {0};
char command[LEN_COMMAND] = {0};

get_system_cmd(command);

fp = popen(command, "r");
if(NULL == fp)
{
printf("popen error\n");
exit(1);
}

while(fgets(readFileName, LEN_FILE_NAME, fp))
{
file_filter(readFileName, FILE_FORMAT_MP3);
}

if(false == fgFindFile)
{
printf("Did not find this format file, please try again!!!\n");
}

pclose(fp);
}


实现效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 linux 遍历文件