开发者

How to remove multiple files in C using wildcards?

开发者 https://www.devze.com 2022-12-18 14:06 出处:网络
Is there any way in C t开发者_如何学Goo remove (using remove()) multiple files using a * (wildcards)?

Is there any way in C t开发者_如何学Goo remove (using remove()) multiple files using a * (wildcards)? I have a set of files that all start with Index. For example: Index1.txt, Index-39.txt etc. They all start with Index but I don't know what text follows. There are also other files in the same directory so deleting all files won't work.

I know you can read the directory, iterate each file name, read the the first 5 chars, compare and if it fits then delete, but, is there an easier way (this is what I currently do by the way)?

This is standard C, since the code runs on Linux and Windows.


As you point out you could use diropen, dirread, dirclose to access the directory contents, a function of your own (or transform the wildcards into a regex and use a regex library) to match, and unlink to delete.

There isn't a standard way to do this easier. There are likely to be libraries, but they won't be more efficient than what you're doing. Typically a file finding function takes a callback where you provide the matching and action part of the code. All you'd be saving is the loop.


If you don't mind being platform-specific, you could use the system() call:

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

Here is some documentation on the system() call, which is part of the standard C library (cstdlib).


Is this all the program does? If so, let the command line do the wildcard expansion for you:

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

on Windows, you need to link against 'setargv.obj', included in the VC standard lib directory.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号