Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何按文件名的一部分查找该文件_C++_Linux_File_Find - Fatal编程技术网

C++ 如何按文件名的一部分查找该文件

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

在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.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检查,我认为这是一个很好的介绍你想要什么。