fnmatch(3) Library Functions Manual fnmatch(3) NAME fnmatch - match filename or pathname LIBRARY Standard C library (libc, -lc) SYNOPSIS #include int fnmatch(const char *pattern, const char *string, int flags); DESCRIPTION The fnmatch() function checks whether the string argument matches the pat- tern 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, in- stead 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 (?) metachar- acter, 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 lead- ing 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 fol- lowed 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 case-insensitively. FNM_EXTMATCH If this flag (a GNU extension) is set, extended patterns are sup- ported, 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 pat- terns in the pattern-list match the input string. '*(pattern-list)' The pattern matches if zero or more occurrences of any of the pat- terns in the pattern-list match the input string. '+(pattern-list)' The pattern matches if one or more occurrences of any of the pat- terns 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). allbox; lbx lb lb l l l. Interface Attribute Value T{ fnmatch() T} Thread safety MT-Safe env locale STANDARDS fnmatch() POSIX.1-2008. FNM_CASEFOLD FNM_IGNORECASE POSIX.1-2024. FNM_FILE_NAME FNM_LEADING_DIR GNU. HISTORY fnmatch() POSIX.1-2001, POSIX.2. FNM_CASEFOLD has been available on many systems even before POSIX.1-2024. SEE ALSO sh(1), glob(3), scandir(3), wordexp(3), glob(7) Linux man-pages 6.18 2026-02-08 fnmatch(3)