C++ 如何按文件名的一部分查找该文件
在c++/linux中,如何按文件名的一部分查找a文件? 文件全名可能类似于:C++ 如何按文件名的一部分查找该文件,c++,linux,file,find,C++,Linux,File,Find,在c++/linux中,如何按文件名的一部分查找a文件? 文件全名可能类似于: foo.db.1 或 我如何通过文件名“foo.db”的一部分找到该文件,谢谢,例如: find /your/path -name "foo.db.*" 它将匹配/your/path结构中名称类似foo.db.的所有文件 如果db.后面的文本始终是一个数字,则可以执行以下操作: find /your/path -name "foo.db.[0-9]*" 您也可以使用ls: ls -l /your/path/ls
foo.db.1
或
我如何通过文件名“foo.db”的一部分找到该文件,谢谢,例如:
find /your/path -name "foo.db.*"
它将匹配/your/path
结构中名称类似foo.db.
的所有文件
如果db.
后面的文本始终是一个数字,则可以执行以下操作:
find /your/path -name "foo.db.[0-9]*"
您也可以使用ls
:
ls -l /your/path/ls.db.[0-9]
获取名称类似于foo.db.
甚至
ls -l /your/path/ls.db.[0-9]*
要获取名称类似于foo.db.
的文件,例如:
find /your/path -name "foo.db.*"
它将匹配/your/path
结构中名称类似foo.db.
的所有文件
如果db.
后面的文本始终是一个数字,则可以执行以下操作:
find /your/path -name "foo.db.[0-9]*"
您也可以使用ls
:
ls -l /your/path/ls.db.[0-9]
获取名称类似于foo.db.
甚至
ls -l /your/path/ls.db.[0-9]*
要获取名称类似于foo.db.
的文件,请执行以下操作:
find /filepath -name "foo.db*"
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);
}
在C/C++中,您可以这样做:
find /filepath -name "foo.db*"
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);
}
这样做:
find /filepath -name "foo.db*"
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);
}
在C/C++中,您可以这样做:
find /filepath -name "foo.db*"
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标准函数是。早些时候有人在它周围发布了一个易于使用的C++包装。 < P>你的用例的POSIX标准函数是。早些时候有人在它周围发布了一个易于使用的C++包装。谢谢你,如何把它与C++代码结合起来?我想在c++中获得完整的文件名,事实上。。。人们对如何在C++中做这件事感到好奇。我猜BASH通过为不同的文件运行程序来为我们做多次。@ FEDOQUI直到现在我知道我正在搜索的目录,知道NAMPATATN(“Foo.db([09] *)),我想知道它是什么,在文件名的末尾,如果我找到“fo.db 13”,我想知道数字是13,在C++中。 Thanks@user1853170检查,我认为这是一个很好的介绍你想。谢谢,如何结合它与C++代码?我想在c++中获得完整的文件名,事实上。。。人们对如何在C++中做这件事感到好奇。我猜BASH通过为不同的文件运行程序来为我们做多次。@ FEDOQUI直到现在我知道我正在搜索的目录,知道NAMPATATN(“Foo.db([09] *)),我想知道它是什么,在文件名的末尾,如果我找到“fo.db 13”,我想知道数字是13,在C++中。 Thanks@user1853170检查,我认为这是一个很好的介绍你想要什么。