13.4.? ワイルドカード

ワイルドカードは一度に複数のファイルを処理したい時にとても便利です. ls, mv, rm 等々,ファイル名を指定する時などに使えます.

ファイル名としてアスタリスク (*)と指定すると,あらゆる文字列にマッチします. このアスタリスクをワイルドカードと呼びます.

たとえば名前が .tex で終るファイルだけを表示したいなら, *.tex と指定します.

promptls *.tex return2 bib.tex main.tex report.tex test.tex tmp.tex

Emacs はバックアップファイルを大量に作ります. ファイル名が ~ で終るファイルです. 見苦しいのでこれらをすべて削除したいなら,次のように使います.

promptrm -i *~ return2

ここで rm コマンドに -i というオプションをつけているのは,このオプションにより,ひとつひとつ本当に消してよいか尋ねてくれるから,間違いで一気にファイルを消してしまうことを防ぐためです.

caution 上でアスタリスクとチルダの間に空白を絶対にいれないでください. もし空白をいれると,「全てのファイル(*)とホームディレクトリ(~)を消せ」ということになってしまいます.

ファイルを指定するときに使えるワイルドカードをまとめておきます.

たとえば, [a-d]*.tex というパターンは,ファイル名が a か b か c か d ではじまり, .texという拡張子を持つファイルにマッチします.

promptls [a-d]*.tex return2 bib.tex

caution ワイルドカードは便利ですが,少し間違えると大変なことになってしまうので,充分注意が必要です.

Finderにおいて,上記に相当する操作は,review_s13.3.10 複数ファイルの選択に説明があります.

advanced

ワイルドカードの正確な意味は,カレントディレクトリにあるファイル名の集合からパターンにマッチするものだけを選んで,その結果の集合を,パターンを書いた位置にパラメータとして展開するということです. このため,複数のファイル名をパラメータとして取るコマンドでしか使えません.

echo コマンドを使うと,どのように展開されるかが確認できます.

promptecho ls *.tex return2 ls bib.tex main.tex report.tex test.tex tmp.tex

また, Mac OS X 標準のシェルである bash では,ワイルドカードを含むパターンを書いた後で tab を打つと,マッチするファイル名が一つだけの時はそれに置き換わり,二つ以上ある時は,もう一度 tab を打つと,マッチするファイル名の一覧が下に表示されます.

promptls *.textabtab bib.tex main.tex report.tex test.tex tmp.tex promptls *.tex