【问题标题】:How can I search for files in a directory using a wildcard如何使用通配符搜索目录中的文件
【发布时间】:2012-05-21 16:41:03
【问题描述】:

我目前正在尝试找到一种方法来搜索适合包含通配符的模式的特定目录(在本例中为 /dev/shm,这部分不需要通配符)中的文件,例如我有一个目录有

stack_review.txt stack_overflow.txt stack_servers.txt

在其中,我想返回所有符合模式 stack_*.txt 的结果,我该怎么做呢?我已经尝试了一些使用 readdir 的示例,但不幸的是还没有找到任何适用于此实现的方法,所以我非常感谢我能在这个问题上获得的任何帮助,谢谢!

【问题讨论】:

标签: c file-io


【解决方案1】:

您正在寻找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]);

【讨论】:

  • +1,但请记住 glob 不是标准 C,因此并非在所有平台(尤其是 Windows)上都可用。不过,它是 POSIX,因此很常见。
【解决方案2】:

元素可以嵌套在文件夹中吗?如果是这样,您的方法必须是递归的。

【讨论】:

    猜你喜欢
    • 2011-02-03
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2016-08-13
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多