Linuxには,「複数のファイルを指定して処理する機能」を備えるコマンドが多数用意されています。例えばファイルのコピーを行うcpコマンドでは,コピー元に複数のファイルを指定し,一括して目的のディレクトリ内にそれらのコピーを作成できます。しかし,多数のファイルを指定する場合は,それらすべてのファイル名を入力しなければならず,面倒です。

 複数のファイルを指定するのに役立つのが,ワイルドカードです。ワイルドカードには,トランプでいうジョーカーのような役割があります。つまり,任意の文字や文字列を表せる記号です。例えば,「ある拡張子を含んだファイルをすべて指定する」といったことが簡単にできます。

 では,Linuxで利用できるワイルドカードを習得しましょう。

任意の1文字を表す「?」

 任意の1文字を表せるワイルドカードが「?」です。「file?」と指定すると,「file1」や「fileA」など,「?」の位置に任意の1文字が入るファイルを指定できます。「?」を複数利用することもできます。例えば,Fileの後に任意の3文字が付くファイルを削除したい場合は,

$ rm file???

と入力します。

 ただし,ドット・ファイルに利用される先頭の「.」記号は,?で表せません。例えば,「?file」としても「.file」は含まれません。

任意の文字列を表す「*」

 任意の0文字以上の文字列を表せるワイルドカードが「*」です。「file*」と指定すると,「fileA」や「filename」などのファイル名を表せます。また,「file*」の場合は,「file」といった全く文字が付かない場合も表されます。

 例えば,png拡張子が付いたファイルをphotoディレクトリに移動したい場合は,

$ mv *.png photo

と指定します。また,「*」のみを指定するとすべてのファイルが指定されます。

 ただし,「*」はファイルの先頭に「.」があるドット・ファイルを表せません。ドット・ファイルを指定したい場合には,「.*」と指定します。

指定文字のいずれかを表す「[...]」

 指定した文字のいずれかを含んだファイルを表したい場合には「[...]」を利用します。例えば,「File」または「file」を削除したい場合は,

$ rm [Ff]ile

と入力します。

 また,マイナス(-)記号で文字の範囲を利用することも可能です。例えば,数字1文字を表すには「[0-9]」とします。同様にアルファベットなら「[a-zA-Z]」と指定します。

指定文字列のいずれかを表す「{...}」

 指定した文字列のいずれかを含んだファイルを表したい場合には,「{...}」を利用します。文字列の指定には,文字列の間をカンマ(,)で区切ります。例えば,jpgまたはgifを拡張子に含んだファイルをgrpディレクトリにコピーしたい場合は,

$ cp *.{jpg,gif} grp

と実行します。

 また,指定したい文字列に「{」,「}」,「,」の記号を含む場合は,それぞれの記号の前に「\」を付けます。a,bまたはcdを含むファイルを削除したいなら,

$ rm *{a\,b,cd}*

と入力します。

各コマンドの詳しい使い方などについては,「Linuxコマンド集」を参照ください。また,「Linuxコマンド逆引き大全」で,行いたい処理内容からコマンドの使い方を調べられます。