Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove multiple files in C using wildcards?

Is there any way in C to 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.

like image 977
Uri Avatar asked Jan 28 '10 16:01

Uri


2 Answers

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.

like image 90
Epsilon Prime Avatar answered Oct 18 '22 10:10

Epsilon Prime


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).

like image 7
e.James Avatar answered Oct 18 '22 09:10

e.James