检查只有部分名称的目录中是否存在文件

时间:2010-12-07 17:58:43

标签: c linux

我需要检查一个目录中是否存在格式*recipient的文件,以及它是否得到了它的名字。我尝试使用opendir()readdir()列出目录中的每个文件并进行比较,但是如果文件很多,这很费时。

有没有更好的方法来实现这一目标?如果是,您是否有小片段显示如何执行此操作?

谢谢,代码表示赞赏。

编辑:

为了更清楚,我需要检查一个目录,查看以recipient结尾的任何文件,或者如果我要使用*recipient则另外放ls,如果是一个文件名字存在然后我需要得到它的名字。

2 个答案:

答案 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;
}