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

Uri*_*Uri 10 c file-io wildcard

在C中有没有办法remove()使用*(通配符)删除(使用)多个文件?我有一组文件都以Index开头.例如:Index1.txt,Index-39.txt等他们一开始都是以指数,但我不知道什么如下文字.同一目录中还有其他文件,因此删除所有文件将不起作用.

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

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

Eps*_*ime 10

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

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

  • 在Unix上,而不是将通配符转换为正则表达式,您应该使用fnmatch(http://www.opengroup.org/onlinepubs/000095399/functions/fnmatch.html). (2认同)

e.J*_*mes 6

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

system("del index*.txt"); // DOS
system("rm index*.txt"); // unix
Run Code Online (Sandbox Code Playgroud)

以下system()调用的一些文档,它是标准C库(cstdlib)的一部分.

  • `system`是按定义实现的,所以我总是添加一个rider来查找相关的供应商文档(如果你能找到它).最少惊喜的原则. (2认同)