FNMATCH - Linux手册页

时间:2019-08-20 18:00:20  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2019-03-06

名称

fnmatch-匹配文件名或路径名

语法

#include <fnmatch.h>

int fnmatch(const char *pattern, const char *string, int flags);

说明

fnmatch()函数检查string参数是否与pattern参数匹配,pattern参数是shell通配符模式(请参阅glob(7))。

flags参数修改行为。它是零个或多个以下标志的按位或:

FNM_NOESCAPE
如果设置了此标志,则将反斜杠视为普通字符,而不是转义字符。
FNM_PATHNAME
如果设置了此标志,则仅将字符串中的斜杠与模式中的斜杠匹配,而不是星号(*)或问号(?)元字符,也不匹配包含斜杠的方括号表达式([])。
FNM_PERIOD
如果设置了此标志,则字符串中的前导期间必须与模式中的期间精确匹配。如果句点是字符串中的第一个字符,或者同时设置了两个FNM_PATHNAME并且句点紧跟斜杠,则认为句点是前导。
FNM_FILE_NAME
这是FNM_PATHNAME的GNU同义词。
FNM_LEADING_DIR
如果设置了此标志(GNU扩展名),则该模式如果与字符串的初始段(后跟一个斜杠)匹配,则认为该模式已匹配。该标志主要供内部使用glibc,仅在某些情况下才实现。
FNM_CASEFOLD
如果设置了此标志(GNU扩展名),则模式不区分大小写地匹配。
FNM_EXTMATCH
如果设置了此标志(GNU扩展),则支持扩展模式,如'ksh'所介绍的,现在其他shell也支持。扩展格式如下,其中pattern-list为'|'模式列表。
'?(pattern-list)'
如果模式列表中任何模式的零个或一次出现与输入字符串匹配,则该模式匹配。
'*(pattern-list)'
如果模式列表中出现的零个或多个模式与输入字符串匹配,则该模式匹配。
'+(pattern-list)'
如果模式列表中的任何一个或多个模式匹配输入字符串,则该模式匹配。
'@(pattern-list)'
如果模式列表中的任何一个模式中的一个恰好与输入字符串匹配,则该模式匹配。
'!(pattern-list)'
如果输入字符串不能与pattern-list中的任何模式匹配,则该模式匹配。

返回值

如果字符串匹配模式,则为零;如果不匹配,则为FNM_NOMATCH;如果有错误,则为另一个非零值。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
fnmatch()Thread safetyMT-Safe env locale

遵循规范

POSIX.1-2001,POSIX.1-2008,POSIX.2 FNM_FILE_NAME,FNM_LEADING_DIR和FNM_CASEFOLD标志是GNU扩展。

另外参见

sh(1),glob(3),scandir(3),wordexp(3),glob(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/