FNMATCH(3)

名称
fnmatch - ファイル名かパス名を照合する

書式
#include <fnmatch.h> int fnmatch(const char *pattern, const char *string, int flags)

解説
fnmatch() 関数は、シェルが使用する規則に従ってパターンを照合します。 string 引数が指定する文字列をチェックし、 pattern 引数が指定するパターンと一致するかどうか確認します。

flags 引数は、 pattern と string の解釈を修正します。 flags の値は、以下の定数のビット単位の論理和です。この定数は、 インクルードファイル fnmatch.h で定義されています。

FNM_NOESCAPE
    通常、 pattern の中でバックスラッシュ (‘\’) の後ろに 1 文字が続くものが現れるごとに、それはその文字で 置き換えられます。この置き換えは、その文字の特殊な意味を 無効にするために実行されます。 FNM_NOESCAPE フラグを設定すると、バックスラッシュ文字は通常文字として扱われます。

FNM_PATHNAME
    string のスラッシュ文字は、 pattern 中のスラッシュと 明確に一致する必要があります。このフラグを設定しないと、スラッシュは 通常文字として扱われます。

FNM_PERIOD
    string の最初のピリオドは、 pattern 中の最初のピリオドと 明確に一致する必要があります。このフラグを設定しないと、最初のピリオドは 通常文字として扱われます。「最初の」という言葉の定義は、 FNM_PATHNAME の指定によって変化します。 string の第 1 キャラクタであるピリオドは、常に「最初の」ピリオドです。 FNM_PATHNAME を設定した場合、スラッシュの直後のピリオドも「最初の」ピリオドです。

FNM_LEADING_DIR
    pattern が問題なく一致した後、残りの /* を無視します。

FNM_CASEFOLD
    pattern と string の両方で大文字と小文字の区別を無視します。

戻り値
fnmatch() 関数は、 pattern が指定するパターンに string が一致するとゼロを戻します。一致しない場合は値 FNM_NOMATCH を戻します。

関連項目
sh(1), glob(3), regex(3)

規格
fnmatch() 関数は、 p1003.2 に準拠しています。

歴史
fnmatch() 関数は、 4.4BSD に追加されました。

バグ
FNM_PATHNAME を指定しても、パターン ‘*’ は空ストリングと一致します。