我需要检查一个目录中是否存在格式*recipient
的文件,以及它是否得到了它的名字。我尝试使用opendir()
和readdir()
列出目录中的每个文件并进行比较,但是如果文件很多,这很费时。
有没有更好的方法来实现这一目标?如果是,您是否有小片段显示如何执行此操作?
谢谢,代码表示赞赏。
编辑:
为了更清楚,我需要检查一个目录,查看以recipient
结尾的任何文件,或者如果我要使用*recipient
则另外放ls
,如果是一个文件名字存在然后我需要得到它的名字。
答案 0 :(得分:2)
你想要glob(3)
。
答案 1 :(得分:2)
例行程序glob
可以满足您的需求。用法示例如下:
http://www.opengroup.org/onlinepubs/009695399/functions/glob.html
这是一个完整的例子,可以满足您的需求:
#include <glob.h>
#include <stdio.h>
int main( int argc, char **argv )
{
glob_t globbuf;
glob( "*recipient", 0, NULL, &globbuf);
if ( globbuf.gl_pathc == 0 )
printf("there were no matching files\n");
else
printf("the first of the matching files is: %s\n", globbuf.gl_pathv[0]);
globfree(&globbuf);
return 0;
}