开发者社区> 问答> 正文

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

看了fnmatch的相关介绍
FNM_PATHNAME
如果设置了这个标志,仅在字符串中匹配斜杠以斜线(/)中,而不能由星号(*)或者一个问号(?)元字符,也由括号表达式([])包含斜杠.
FNM_PERIOD
如果设置了这个标志 ,pattern 中的前导句点来匹配字符串中有精确的期限.如果被看作是领先的是字符的字符串,或如果有 fnm_pathname 是紧跟在斜杠和期限.
没看明白啊!!
我想实现一下这个功能 不知道怎么用那几个参数
文件匹配符,支持零到一个,不指定时认为是“”,表示匹配零到多个字符,要求支持前模糊匹配(.zip ip等)后模糊(a. a.z等)全匹配(*)

展开
收起
a123456678 2016-03-05 14:15:41 6542 0
1 条回答
写回答
取消 提交回答
  • 名称
    fnmatch 匹配文件名或路径名
    staging 模块

    include<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)

    2019-07-17 18:53:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载