如何通过名称的部分找到该文件

时间:2013-09-26 15:40:11

标签: c++ linux file find

如何在c ++ / linux中找到名称中的文件? 文件全名可能如下:

foo.db.1

foo.db.2

如何通过部分名称“foo.db”找到该文件,谢谢

3 个答案:

答案 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);
}