一般に,こうした文字列のパターンマッチ指定のための表現を正規表現と呼ぶ. 正規表現の習得は,コンピュータ利用の基本中の基本で,効率的情報処理には欠かせない.UNIXでは,ファイル名として事実上いくらでも長い名前を付けることができる. ファイルには,ファイルの性質を表わす拡張子を含めて,ファイルとファイル内容ができるだけ対応しているように適切なファイル名をつける必要がある. この考えを徹底するとファイル名が長くなってキーボード入力がわずらわしくなったり,同様なファイル名を持つ関連するファイル群を一括指定したい場合も起ってくる. このようなとき,シェルのファイル名展開機能を使って,ファイル名を楽に指定したり,同じようなファイル名を持つファイル群を取り出すのである.
ファイルを指定するときに使えるワールドカードには次がある.
| ワイルドカード | 意 味 |
|---|---|
* | 任意の文字列(文字がなくてもよい) |
? | 任意の1文字 |
[文字列] | [ ]に含まれている文字の中のどれか1文字. |
[!文字列] | [ ]に含まれない1文字. |
~ | ユーザーのホームディレクトリの絶対パス |
次にワイルドカードを利用したファイルパターンの指定例をあげる.
Unixではテキストファイルはもちろんディレクトリやコマンドやデバイスなども全てファイルとして扱われる.
| * | すべてのファイル | *.txt | 拡張子が .txt であるファイルすべて | *abc* | ファイル名の中にabcという文字列を含むファイルすべて | [a-n]* | aからnまでのどれかの文字で始まるファイルすべて | [-p-z]* | ハイフン(-)かpからzまでのどれかの文字で始まるファイルすべて | [a-zA-Z]* | アルファベットの小文字または大文字のどれがの文字で始まるファイルすべて | *[0-9]* | ファイル名に数字が含まれているファイルすべて | [!0-9]* | 数字では始まらないファイルすべて | ??? | 3文字からなるファイルすべて | ???* | ファイル名が3文字以上のファイルすべて | *.??? | 拡張子が3文字のファイルすべて | *.t* | 拡張子がtで始まるファイルすべて | ~/* | ホームディレクトリにあるファイルすべて | ~/public_html/* | ディレクトリpublic_htmlにあるファイルすべて | ~/doc/*.tex | ディレクトリdocにある拡張子が .texであるファイルすべて | /tmp/* | ディレクトリ/tmpにあるすべてのファイル | ~/public_html/image/*.gif | ディレクトリpublic_html/imageにあるGIFファイルすべて |
上の例で,アルファベットの小文字a-zと大文字A-Zの中の1文字を表わす『[a-zA-Z]』という書き方を『[a-Z]』と書いてはならない(文字コードの大小で判定しているために[a-Z]では何も含まれていないため). また,『A-z』とすると文字コードでZとaの間に含まれてしまう文字も入ってしまう.
とすると,指定したファイルパターンにマッチ (match)したファイル群だけが一覧される. たとえば,『% ls パターン
ls *~』はバックアップファイルを一覧する.