I've seen a few methods for checking the existence of a file in C. However, everything I've seen works for a specific file name. I would like to check for any file that matches a particular pattern. For instance, maybe the pattern is "lockfile*" and "lockfileA", "lockfile.txt", or "lockfile.abc" would register in the check. The way I am doing this currently is to open the directory with opendir() then cycle through readdir() and try to match the pattern with name of each file returned. It works, but I sure would like a more compact way to do this. Any ideas?
You can use glob(3) (standardized by POSIX). You give it a wildcard pattern and it will search the filesystem for matches.
Example:
#include <glob.h>
#include <stdio.h>
int main(int argc, char **argv)
{
glob_t globbuf;
if (0==glob(argv[1], 0, NULL, &globbuf)){
char **a=globbuf.gl_pathv;
puts("MATCHES");
for(;*a;a++)
puts(*a);
}
globfree(&globbuf);
}
Running:
./a.out 'lockfile*'
should give you your lockfiles.