2.3.4 シェルのパターンマッチング

findとlocateは、ファイル名またはその一部をシェルパターンと比較できます。シェルパターンとは、ワイルドカードまたはメタ文字と呼ばれる、次の特殊文字を含められる文字列です。

メタ文字を含むパターンは、シェル自身による展開を防ぐため、引用符で囲む必要があります。二重引用符も単一引用符も使えますし、バックスラッシュによるエスケープでも構いません。

*

任意の0文字以上の文字列に一致します。

?

任意の1文字に一致します。

[string]

文字列stringに含まれる、ちょうど1文字に一致します。これを文字クラスと呼びます。省略記法として、stringには、2つの文字の間にダッシュを置いた範囲を含められます。たとえば、クラス「[a-z0-9_]」は、小文字、数字、アンダースコアのいずれかに一致します。開き角括弧の直後に「!」または「^」を置くと、クラスを否定できます。したがって、「[^A-Z@]」は、大文字とアットマークを除く任意の文字に一致します。

\

直後の文字の特別な意味を取り除きます。文字クラス内でも機能します。

シェルパターンの照合を行うfindのテスト、「-name」「-wholename」などでは、パターン内のワイルドカードはファイル名の先頭の「.」にも一致します。locateも同様です。そのため、「find -name '*macs'」も「locate '*macs'」も、.emacsという名前のファイルに一致します。

シェルではワイルドカードがスラッシュに一致しませんが、findとlocateが行うシェルパターン照合では、スラッシュに特別な意味はありません。したがって、パターン「foo*bar」はファイル名「foo3/bar」に一致でき、パターン「./sr*sc」はファイル名「./src/misc」に一致できます。

「locate」でファイルを検索したいものの、一覧全体を見る必要がない場合は、「--limit」で少数の結果だけを表示するか、「--count」で一致した総数だけを表示できます。