如何使用通配符删除C中的多个文件?

时间:2010-01-28 16:45:55

标签: c file-io wildcard

C中是否有任何方法可以使用remove()(通配符)删除(使用*)多个文件? 我有一组文件都以Index开头。例如:Index1.txtIndex-39.txt等。 它们都以Index开头,但我不知道后面是什么文字。同一目录中还有其他文件,因此删除所有文件将无效。

我知道你可以阅读目录,迭代每个文件名,读取前5个字符,比较,如果它适合然后删除,但是,有一个更简单的方法(这是我目前做的方式)?

这是标准的C,因为代码在Linux和Windows上运行。

3 个答案:

答案 0 :(得分:9)

正如您所指出的,您可以使用diropen,dirread,dirclose来访问目录内容,使用您自己的函数(或将通配符转换为正则表达式并使用正则表达式库)来匹配,并取消链接以删除。

没有一种标准方法可以更轻松地完成这项工作。可能有图书馆,但它们不会比你正在做的更有效率。通常,文件查找功能会进行回调,您可以在其中提供代码的匹配和操作部分。所有你要保存的就是循环。

答案 1 :(得分:6)

如果您不介意特定于平台,可以使用system()电话:

system("del index*.txt"); // DOS
system("rm index*.txt"); // unix

Heresystem()调用的一些文档,它是标准C库(cstdlib)的一部分。

答案 2 :(得分:0)

这是所有程序吗?如果是这样,请让命令行为您执行通配符扩展:

int main(int argc, char* argv[])
{
   while (argc--)
     remove(argv[argc]);
}

在Windows上,您需要链接到VC标准lib目录中包含的“setargv.obj”。