glob 只给出匹配模式的第一个文件
glob in giving only first file that matched pattern
我想在 C++ 中使用 glob.h
获取文件夹中的文件列表。
考虑以下简单代码:
#include <iostream>
#include "glob.h"
using namespace std;
int main(int argc, char const *argv[])
{
glob_t globResult;
string filePath = argv[1];
glob(filePath.c_str(),0,NULL,&globResult);
cout<<"No. of files found:"<<globResult.gl_pathc<<endl;
for(int i = 0; i < globResult.gl_pathc; i++)
{
cout << string(globResult.gl_pathv[i]) << endl;
}
return 0;
}
在以下文件的文件夹中:
Images\
|- cat.jpeg
|- dog.jpg
|- rat.jpg
当我 运行 Image ./Images/*
时,我只得到 cat.jpeg,而不是所有三个文件。
我做错了什么?
使用 g++ 6.3
和 clang++ 5.0
编译。
根据评论...一般来说,可执行文件的所有命令行参数都将由 shell 在 传递给您的应用程序之前进行解释。因此,给定文件层次结构...
Images\
|- cat.jpeg
|- dog.jpg
|- rat.jpg
命令...
Image ./Images/*
实际上会导致...
Image ./Images/cat.jpeg ./Images/dog.jpg ./Images/rat.jpg
所以在您的代码中传递给 glob
的第一个参数将是 ./Images/cat.jpeg
,因此,这将是唯一的匹配项。为避免 shell 扩展,只需引用 arg...
Image './Images/*'
我想在 C++ 中使用 glob.h
获取文件夹中的文件列表。
考虑以下简单代码:
#include <iostream>
#include "glob.h"
using namespace std;
int main(int argc, char const *argv[])
{
glob_t globResult;
string filePath = argv[1];
glob(filePath.c_str(),0,NULL,&globResult);
cout<<"No. of files found:"<<globResult.gl_pathc<<endl;
for(int i = 0; i < globResult.gl_pathc; i++)
{
cout << string(globResult.gl_pathv[i]) << endl;
}
return 0;
}
在以下文件的文件夹中:
Images\
|- cat.jpeg
|- dog.jpg
|- rat.jpg
当我 运行 Image ./Images/*
时,我只得到 cat.jpeg,而不是所有三个文件。
我做错了什么?
使用 g++ 6.3
和 clang++ 5.0
编译。
根据评论...一般来说,可执行文件的所有命令行参数都将由 shell 在 传递给您的应用程序之前进行解释。因此,给定文件层次结构...
Images\
|- cat.jpeg
|- dog.jpg
|- rat.jpg
命令...
Image ./Images/*
实际上会导致...
Image ./Images/cat.jpeg ./Images/dog.jpg ./Images/rat.jpg
所以在您的代码中传递给 glob
的第一个参数将是 ./Images/cat.jpeg
,因此,这将是唯一的匹配项。为避免 shell 扩展,只需引用 arg...
Image './Images/*'