如何在c ++ / linux中找到名称中的文件? 文件全名可能如下:
foo.db.1
或
foo.db.2
如何通过部分名称“foo.db”找到该文件,谢谢
答案 0 :(得分:3)
用例的Posix标准函数为glob()
。之前有人发布了一个易于使用的C ++包装器here on Stackoverflow。
答案 1 :(得分:2)
例如:
find /your/path -name "foo.db.*"
它将匹配名称类似/your/path
的{{1}}结构中的所有文件。
如果foo.db.<something>
之后的文字始终是一个数字,您可以执行以下操作:
db.
您还可以使用find /your/path -name "foo.db.[0-9]*"
:
ls
获取名称类似ls -l /your/path/ls.db.[0-9]
甚至
foo.db.<number>
获取名称为ls -l /your/path/ls.db.[0-9]*
答案 2 :(得分:0)
这样做:
find /filepath -name "foo.db*"
在C / C ++中,你可以这样做:
void findFile(const char *path)
{
DIR *dir;
struct dirent *entry;
char fileName[] = "foo.db";
if (!(dir = opendir(path)))
return;
if (!(entry = readdir(dir)))
return;
do {
if (entry->d_type == DT_DIR) {
char path[1024];
int len = snprintf(path, sizeof(path)-1, "%s/%s", path, entry->d_name);
path[len] = 0;
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
continue;
if(strstr(fileName, entry->d_name) != NULL) {
printf("%s\n", "", entry->d_name);
}
findFile(path);
}
else
printf(" %s\n", "", entry->d_name);
} while (entry = readdir(dir));
closedir(dir);
}