如何使用C搜索文件

时间:2012-05-22 02:39:37

标签: c file-io

过去几天我一直在寻找一种基于模式(例如* -stack.txt)搜索文件的方法,并且一直很难找到一种方法,说过我想知道是否有人知道这样做的方法?已经搜索过谷歌等等,但实际上找不到任何有用的东西:/这只会用于在linux目录中搜索与某种模式相匹配的文件

(目录加出的一个例子)

/dev/shm/123-stack.txt abc-stack.txt overflow-stack.txt

searching for *-overflow.txt would return all of the above files 

2 个答案:

答案 0 :(得分:1)

你最好的选择可能是glob(3)。它几乎完全符合你的要求。从你所说的正确代码的草图是

char glob_pattern[PATH_MAX];
glob_t glob_result;
snprintf(glob_pattern, PATH_MAX, "%s/%s", directory, file_pattern);
glob(glob_pattern, 0, NULL, &glob_result);
for (size_t i = 0; i < glob_result.gl_pathc; ++i) {
  char *path = glob_result.gl_pathv[i];
  /* process path */
}

答案 1 :(得分:0)

我认为您应该使用opendir系统调用,就像this question中所述。

但除此之外,还有更多工作要做 - 因此更高级别的语言可以提供更好的界面。