0

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

(目录加out的例子)

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

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

2 回答 2

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 */
}
于 2012-05-22T03:55:01.487 回答
0

我认为您应该使用opendir系统调用,就像在这个问题中描述的那样。

但除此之外还有很多工作要做——因此高级语言提供了更好的接口。

于 2012-05-22T02:42:43.703 回答