问题描述
- 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