www.LinuxHowtos.org
fnmatch
Section: C Library Functions (3)Updated: 202-0-08
Index Return to Main Contents
NAME
fnmatch - match filename or pathnameLIBRARY
Standard C library (libc,~-lc)SYNOPSIS
#include <fnmatch.h> int fnmatch(const char *pattern, const char *string, int flags);
DESCRIPTION
The fnmatch() function checks whether the string argument matches the pattern argument, which is a shell wildcard pattern (see glob(7)). The flags argument modifies the behavior; it is the bitwise OR of zero or more of the following flags:- FNM_NOESCAPE
- If this flag is set, treat backslash as an ordinary character, instead of an escape character.
- FNM_PATHNAME
- If this flag is set, match a slash in string only with a slash in pattern and not by an asterisk (*) or a question mark (?) metacharacter, nor by a bracket expression ([]) containing a slash.
- FNM_PERIOD
- If this flag is set, a leading period in string has to be matched exactly by a period in pattern. A period is considered to be leading if it is the first character in string, or if both FNM_PATHNAME is set and the period immediately follows a slash.
- FNM_FILE_NAME
- This is a GNU synonym for FNM_PATHNAME.
- FNM_LEADING_DIR
- If this flag (a GNU extension) is set, the pattern is considered to be matched if it matches an initial segment of string which is followed by a slash. This flag is mainly for the internal use of glibc and is implemented only in certain cases.
- FNM_CASEFOLD
- FNM_IGNORECASE (same as FNM_CASEFOLD) If this flag is set, the pattern is matched cas-insensitively.
- FNM_EXTMATCH
- If this flag (a GNU extension) is set, extended patterns are supported, as introduced by 'ksh' and now supported by other shells. The extended format is as follows, with pattern-list being a '|' separated list of patterns.
- '?(pattern-list)'
- The pattern matches if zero or one occurrences of any of the patterns in the pattern-list match the input string.
- '*(pattern-list)'
- The pattern matches if zero or more occurrences of any of the patterns in the pattern-list match the input string.
- '+(pattern-list)'
- The pattern matches if one or more occurrences of any of the patterns in the pattern-list match the input string.
- '@(pattern-list)'
- The pattern matches if exactly one occurrence of any of the patterns in the pattern-list match the input string.
- '!(pattern-list)'
- The pattern matches if the input string cannot be matched with any of the patterns in the pattern-list.
RETURN VALUE
Zero if string matches pattern, FNM_NOMATCH if there is no match or another nonzero value if there is an error.ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).| Interface | Attribute | Value |
| fnmatch() | Thread safety | M-Safe env locale |
STANDARDS
- fnmatch()
- POSIX.-2008.
- FNM_CASEFOLD
- FNM_IGNORECASE POSIX.-2024.
- FNM_FILE_NAME
- FNM_LEADING_DIR GNU.
HISTORY
- fnmatch()
- POSIX.-2001, POSIX.2.
- FNM_CASEFOLD
- has been available on many systems even before POSIX.-2024.
SEE ALSO
sh(1), glob(3), scandir(3), wordexp(3), glob(7)