linux系统如何按照文件名模糊查找文件?下面良许教程网为大家介绍一下Linux系统按照文件名模糊查找文件的具体方法,有需要的小伙伴可以参考一下。
fnmatch
int fnmatch(const char *pattern, const char *string, int flags);
参数说明
FNM_NOESCAPE 如果这个标志设置了,处理反斜杠为普通字符,而不是转义字符。 FNM_PATHNAME 如果这个标志设置了,string
里的斜杠只匹配 pattern
里的斜杠,它不能匹配星号(*)
或问号(?)
元字符,也不能匹配包含斜杠的中括号表达式([])
。 FNM_PERIOD 如果这个标志设置了,string
里的起始点号必须匹配 pattern
里的点号。一个点号被认为是起始点号,如果它是string
第一个字符,或者如果同时设置了 FNM_PATHNAME
,紧跟在斜杠后面的点号。 FNM_FILE_NAME 这是 FNM_PATHNAME
的 GNU 同义语。 FNM_LEADING_DIR 如果这个标志(GNU 扩展)设置了,模式必须匹配跟随在斜杠之后的 string
的初始片断。这个标志主要是给 glibc
内部使用并且只在一定条件下实现。 FNM_CASEFOLD 如果这个标志(GNU 扩展)设置了,模式匹配忽略大小写。
返回值
0
:string 匹配 pattern; FNM_NOMATCH
:没有匹配;或者其它非零值,如果出错。
示例
示例代码如下:
#include#include #include #include #include #include #include using namespace std; vector WildcardSearch(const char* pattern,const char* filePath) { vector res; struct dirent *entry; DIR *dir; int ret; dir = opendir(filePath); if(dir != NULL) { while((entry = readdir(dir)) != NULL) { ret = fnmatch(pattern,entry->d_name,FNM_PATHNAME | FNM_PERIOD); if(ret == 0) { res.push_back(entry->d_name); } else { continue; } } } closedir(dir); return res; } int main(int argc,char*argv[]) { vector tmp; char* pattern = argv[1]; char* path = argv[2]; tmp = WildcardSearch(pattern,path); for(int i=0;i 例如:
./test "2018-*.bmp" ./path至此关于Linux系统按照文件名模糊查找文件的教程介绍结束,各位小伙伴有任何疑问都可以在评论区留言。
以上就是良许教程网为各位朋友介绍的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!
本文来源:www.lxlinux.net/1381.html,若引用不当,请联系修改。