UNIX/基礎知識/ワイルドカード、メタキャラクタ
ワイルドカード、メタキャラクタとは任意の文字列を指定するための特殊な文字のことです. ワイルドカードやメタキャラクタを利用することによって,複数のファイルを効率的に操作できます.
一般的なシェルで使えるワイルドカードは次のようになります。
? | 任意の1文字 |
* | 任意の文字列 |
メタキャラクタには以下のようなものがあります。
[...] | カッコ内の文字のうちのどれか1文字。[01234]は[0-4]、[bcdefg]は[b-g]のようにも書ける。 |
[^...] | カッコ内の文字以外の1文字。[...] の逆。 |
{... , ...} | コンマで区切られた文字列のうちのどれか。 |
~ | ファイル名先頭において、ユーザーのホームディレクトリへの絶対パス |
一例をあげると以下のようになります。
a?c | abc, axc, a+c、など |
*.c | .c で終わるファイル。abc.c、main.c など |
bana* | bana で始まるファイル。banana.txt など |
[a-ce]* | a, b, c, e のいずれかで始まるファイル。appare.txt、bash、choice.html、elekiban.jpg など |
[^xyz]* | x, y, z のいずれかで始まらないファイル |
*.{doc,txt} | doc または txt で終わるファイル。foo.txt、bar.doc など |
例えば次のように使います。
% rm *~
そのディレクトリ内にあるファイル名の最後尾に ~(チルダ) がついているファイルを一括して削除します。 便利ですが、間違って
% rm *
などとしないように注意してください。
% cp *.html ~/
カレントディレクトリの拡張子が html のファイルすべてホームディレクトリにコピーします。
% mv * ~
カレントディレクトリのすべてのファイルをホームディレクトリに移動します。
% mv ex0[1-9].c ~
ex0 の次の文字が 0 から 9 の文字で、その後に .c と続くファイルを ホームディレクトリに移動します。
特に共通点がないものは、
% mv file1 file2 file3 ~/
とするしかなくなるので、 日頃から規則性のある名前をつけるようにすると楽かもしれません。 拡張子ぐらいは必ずつけるようにしましょう。