C中是否有任何方法可以使用remove()
(通配符)删除(使用*
)多个文件?
我有一组文件都以Index开头。例如:Index1.txt
,Index-39.txt
等。
它们都以Index开头,但我不知道后面是什么文字。同一目录中还有其他文件,因此删除所有文件将无效。
我知道你可以阅读目录,迭代每个文件名,读取前5个字符,比较,如果它适合然后删除,但是,有一个更简单的方法(这是我目前做的方式)?
这是标准的C,因为代码在Linux和Windows上运行。
答案 0 :(得分:9)
正如您所指出的,您可以使用diropen,dirread,dirclose来访问目录内容,使用您自己的函数(或将通配符转换为正则表达式并使用正则表达式库)来匹配,并取消链接以删除。
没有一种标准方法可以更轻松地完成这项工作。可能有图书馆,但它们不会比你正在做的更有效率。通常,文件查找功能会进行回调,您可以在其中提供代码的匹配和操作部分。所有你要保存的就是循环。
答案 1 :(得分:6)
如果您不介意特定于平台,可以使用system()
电话:
system("del index*.txt"); // DOS
system("rm index*.txt"); // unix
Here是system()
调用的一些文档,它是标准C库(cstdlib)的一部分。
答案 2 :(得分:0)
这是所有程序吗?如果是这样,请让命令行为您执行通配符扩展:
int main(int argc, char* argv[])
{
while (argc--)
remove(argv[argc]);
}
在Windows上,您需要链接到VC标准lib目录中包含的“setargv.obj”。