如何在C++/linux中通过名称的一部分找到该文件? 文件全名也许喜欢:如何通过名称的一部分找到该文件
foo.db.1
或
foo.db.2
我怎样才能找到它的名字 “foo.db” 的部分文件,感谢
如何在C++/linux中通过名称的一部分找到该文件? 文件全名也许喜欢:如何通过名称的一部分找到该文件
foo.db.1
或
foo.db.2
我怎样才能找到它的名字 “foo.db” 的部分文件,感谢
例如有:
find /your/path -name "foo.db.*"
它将匹配/your/path
结构中名称类似的所有文件。
如果db.
后的文本始终是一个数字,你可以这样做:
find /your/path -name "foo.db.[0-9]*"
您还可以使用ls
:他的名字就像是foo.db.<number>
甚至
ls -l /your/path/ls.db.[0-9]
获取文件夹
ls -l /your/path/ls.db.[0-9]*
获取名称类似的文件
这样做:
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);
}
为您的使用情况POSIX标准的功能是glob()
。早些时候有人发布了一个简单易用的C++包装器here on Stackoverflow。
谢谢,如何将它与C++代码结合?我想在C++中获得完整的文件名 – user1853170
你现在有什么代码? – fedorqui
其实......人们对如何在C++中做到这一点更加好奇。我猜bash通过为发现的不同文件多次运行一个程序来为我们做到这一点。 – Chen