有人可以建议我如何使用系统调用对具有特定扩展名的文件进行递归搜索吗?我应该使用opendir(),但我不太了解它的工作方式以及如何递归使用它。
答案 0 :(得分:1)
我应该使用opendir(),但我不太了解它的工作原理以及如何递归使用它。
习惯上来说,opendir()
不会递归使用,而是与readdir()
循环使用,反复来列出文件,其中可以包含其他目录。
在循环中使用opendir()和readdir()查找文件的示例。 (from here)
此示例直接来自链接,但strstr()
调用除外,该调用用于提取具有您要查找的扩展名的文件。 (请参见代码中的注释):
#include <stdio.h>
#include <dirent.h>
int main()
{
DIR *folder;
struct dirent *entry;
int files = 0;
folder = opendir(".");
if(folder == NULL)
{
perror("Unable to read directory");
return(1);
}
while(entry=readdir(folder))
{
files++;
if(strstr(entry->d_name, ".csv"))//Added to illustrate
//(change csv to extension you are looking for)
{
printf("File %3d: %s\n",
files,
entry->d_name);
}
}
closedir(folder);
return(0);
}
如果您确实确实是递归的意思,则有一些ideas how to do that here。