模糊匹配-Linux C++ 使用fnmatch函数匹配文件名

问题描述

Linux C++ 使用fnmatch函数匹配文件名

看了fnmatch的相关介绍
FNM_PATHNAME
如果设置了这个标志,仅在字符串中匹配斜杠以斜线(/)中,而不能由星号(*)或者一个问号(?)元字符,也由括号表达式([])包含斜杠.
FNM_PERIOD
如果设置了这个标志 ,pattern 中的前导句点来匹配字符串中有精确的期限.如果被看作是领先的是字符的字符串,或如果有 fnm_pathname 是紧跟在斜杠和期限.
没看明白啊!!

我想实现一下这个功能 不知道怎么用那几个参数
文件匹配符,支持零到一个,不指定时认为是“*”,*表示匹配零到多个字符,要求支持前模糊匹配(*.zip ip等)后模糊(a. a.z*等)全匹配(*)

解决方案

名称
fnmatch 匹配文件名或路径名
staging 模块
# include<<a href="http://linux.die.net/include/fnmatch.h" rel="nofollow">fnmatch.h>
 int  fnmatch(const  char *图案, const  char  *string , int  flags); 

描述

在fnmatch()函数检查匹配 pattern 的字符串参数,它是一个 shell 的通配符模式.
flags 参数的修改行为;它是下列标志按位"或"的零个或零个以上的:
FNM_NOESCAPE如果设置了此标志,反斜线视为普通字符的转义字符 FNM_PATHNAME如果设置了这个标志,仅在字符串中匹配斜杠以斜线(/)中,而不能由星号(*)或者一个问号(?)元字符,也由括号表达式([])包含斜杠. FNM_PERIOD如果设置了这个标志 ,pattern 中的前导句点来匹配字符串中有精确的期限.如果被看作是领先的是字符的字符串,或如果有 fnm_pathname 是紧跟在斜杠和期限. FNM_FILE_NAME这是 gnu fnm_pathname 的同义词. FNM_LEADING_DIR 如果此标志(gnu扩展)设置,如果它匹配来匹配模式被认为是一个初始段的字符串,它后面跟有一个正斜杠.此标志主要用于在内部使用的 glibc ,只有在特定的情况下实现. FNM_CASEFOLD如果此标志(gnu扩展)设置,模式是匹配 case insensitively .
返回值
如果字符串与模式匹配为零 ,fnm_nomatch 如果没有匹配或另一个非零值,如果有错误.
符合
posix.2. fnm_file_name fnm_leading_dir ,和 fnm_casefold 的标志,在 gnu 扩展.
参见
sh(1), glob(3), scandir(3), wordexp(3), glob(7)
引用

collectd.conf(5), 找到(1)git,每个 ref(1)gitignore .(5), globus rls admin(8), init(5)netplugd .(8), pa(1), sudoers(5), tmux(1),a href ="/s/linux.die/65_2631/man 3 uwildmat.shtml"rel = <"nofollow">uwildmat(3)

解决方案二:

简单来说,这两个标识你都不用就对了。

解决方案三:

http://blog.csdn.net/leeboy_wang/article/details/7974972

时间: 2024-08-08 02:16:58

模糊匹配-Linux C++ 使用fnmatch函数匹配文件名的相关文章

oracle正则表达式函数 匹配 手机

ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的功能相似 1.正则表达式中的元字符 元字符 意思 例子 说明要匹配的字符是一个特殊字符.常量或者后者引用.(后引用重复上一次的匹配) n 匹配换行符 \ 匹配 ( 匹配 ( ) 匹配 ) ^ 匹配字符串的开头位置 如果A是字

函数匹配

void f(); void f(int ); void f(int,int); void f(double,double=3.14); f(5.6);//调用void f(double,double) 确定候选函数和可行函数 函数匹配的第一步是选定本次调用对应的重载函数集,集合中的函数称为候选函数.候选函数具备两个特征:一是与被调用的函数同名:二是其声明在调用点可见.在这个例子中,有4个名为f的候选函数. 第二步考察本次调用提供的实参,然后从候选函数中选出能被这组实参调用的函数,这些新选出的函

linux awk 内置函数实例

awk内置函数,主要分4种:算数函数.字符串函数.时间函数.一般函数 一.算术函数 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x ) 返回 y/x 的反正切. cos( x ) 返回 x 的余弦:x 是弧度. sin( x ) 返回 x 的正弦:x 是弧度. exp( x ) 返回 x 幂函数. log( x ) 返回 x 的自然对数. sqrt( x ) 返回 x 平方根. int( x ) 返回 x 的截断至整数的值. rand( ) 返回

源代码-怎么样再linux下查看dump_stack()函数打印出来的信息?

问题描述 怎么样再linux下查看dump_stack()函数打印出来的信息? 本人Linux小白,刚学没多久,最近我想要研究下linux中打开文件操作的流程,于是我就在内核的filp open()函数的源代码中插入了dump_stack_()函数. 我重新编译内核之后,直接在终端调用cd 命令行,然后想在系统日志里面看看有没有 函数调用打印出来,但是翻来翻去好像什么都没有的样子. 但是我自己写一个简单的模块,里面有dump_stack_函数,在编译模块,再运行这个模块, 这样的话又可以在日志里

solr如何让全词匹配结果在最前面 部分匹配的在后面呢?

问题描述 solr如何让全词匹配结果在最前面 部分匹配的在后面呢? solr如何让全词匹配结果在最前面 部分匹配的在后面呢? 之前在讨论群里面有童鞋讨论说是将tf降为1,利用span检索,考虑offset因素. 但是不知道具体怎么配置和实现这个,请大家详细指导一下,谢谢. 解决方案 tf降为1可以看http://blog.csdn.net/xiaoyu714543065/article/details/11850087 重写打分机制

linux中的图形处理函数

问题描述 linux中的图形处理函数 个人感觉qt和c++有点相似,没接触过c++,但是对图像的处理有一定的兴趣,linux下有没有专门的图形处理函数?帮忙发下资料,不胜感激.

linux c语言 select函数用法

linux c语言 select函数用法 表头文件 #i nclude<sys/time.h> #i nclude<sys/types.h> #i nclude<unistd.h> 定义函数 int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout); 函数说明 select()用来等待文件描述词状态的改变.参数n代表最大的文件描述词加1

Linux下利用ioctl函数获取网卡信息

linux下的ioctl函数原型如下: #include <sys/ioctl.h> int ioctl(int handle, int cmd, [int *argc, int argv]) 函数成功返回0,失败返回-1. 其相关命令接口如下:   类别 Request 说明 数据类型 套 接 口 SIOCATMARK SIOCSPGRP SIOCGPGRP 是否位于带外标记 设置套接口的进程ID 或进程组ID 获取套接口的进程ID 或进程组ID int int int 文 件 FIONBI

正则表达式匹配解析过程探讨分析(正则表达式匹配原理)_正则表达式

已经有多篇关于正则表达式介绍的文章,随着我们越来越多使用正则表达式,想对性能做优化.减少我们正则表达式书写匹配Bug.我们不得不进一步深入了解正则表达式执行过程了.下面我们一起学习,分析下正则表达式执行过程.我们会用regexbuddy测试工具分解执行过程,具体工具使用,可以看:正则表达式性能测试工具推荐.优化工具推荐(regexbuddy推荐).要了解正则表达式解析过程前,我们先来熟悉几个概念. 常见正则表达式引擎 引擎决定了正则表达式匹配方法及内部搜索过程,了解它至关重要的.目前主要流行引擎