我目前正试图找到一种方法来搜索特定目录中的文件(在本例中为/dev/shm,本部分不需要通配符),该目录符合包含通配符的模式,例如,我有一个目录
stack_review.txt stack_overflow.txt stack_servers.txt
在它中,我想返回所有符合模式堆栈*.txt的结果,我该怎么做呢?我尝试了一些使用readdir的例子,但是不幸的是还没有找到任何对这个实现有效的东西,所以我非常感谢您能帮助我解决这个问题,谢谢!
最佳答案
您正在查找glob()
。从http://linux.die.net/man/3/glob:
下面的代码就是一个使用示例,它模拟键入ls -l *.c ../*.c
在外壳中:
glob_t globbuf;
globbuf.gl_offs = 2;
glob("*.c", GLOB_DOOFFS, NULL, &globbuf);
glob("../*.c", GLOB_DOOFFS | GLOB_APPEND, NULL, &globbuf);
globbuf.gl_pathv[0] = "ls";
globbuf.gl_pathv[1] = "-l";
execvp("ls", &globbuf.gl_pathv[0]);