ファイル名の正規表現

正規表現とは

シェルのコマンドラインにおいて、ファイルの名前を打ち込む時にメタキャラクターを使用すると長い名前や、複数のファイルを短く表すことができる。
例えば、C言語のプログラムファイル(ファイル名の最期が.cになるファイル)は*.cによって表すことができる。
また、メタキャラクターは組み合わせて使用できるので、複雑なパターンのファイル名も表すことができる。
メタキャラクターには以下の記号を使用する。

*
0文字以上の任意の文字列
0文字以上なので、文字が無くてもマッチする。
たとえばa*a, aa, abcde, a123 などにマッチする。
?
任意の1文字
たとえば ???aaa, abc, 123 などにマッチする。
[...]
[]の中の1文字

たとえば [abc]eeaee, bee, cee とマッチする。
ただし、アルファベット、数字の続いた部分は次のようにも表現できる
[a-e]
[abcde] と同じ
[1-5]
[12345] と同じ
[A-Za-z]
大文字、小文字を含んだアルファベット全部
{str1,str2,...}
str1,str2...中の文字列の一つ
たとえば {abc,def}ggabcgg, defgg とマッチする。

ここでは主にlsコマンドを使用しているが、別のコマンド(viその他)でも同じようにファイル名にメタキャラクターが使用できる。

# ls
a.out test1.c test2.c
tmp1.c tmp2.c tmp3.c
# ls *.c       <- ファイル名の最期が.cのファイル
test1.c test2.c tmp1.c tmp2.c tmp3.c
# ls ????.c       <- 任意の文字が4文字あって最期が.cになるファイル
tmp1.c tmp2.c tmp3.c
# ls tmp[23].*       <- tmpの後に2か3が来てピリオドの後に0文字以上の文字が続くファイル名
tmp2.c tmp3.c
# ls *[23].*       <- 2か3の後にピリオドが来て、それらの前後に0文字以上の文字が来るファイル名
test2.c tmp2.c tmp3.c
# ls [A-Za-z].???       <- 最初の文字が大文字・小文字のアルファベットでピリオドの後に任意の3文字が続くファイル名
a.out
# ls {a,tmp}.*       <- 最初がaかtmpでピリオドの後に0文字以上の文字が続くファイル名
a.out tmp1.c tmp2.c
# echo *       <- lsの代わり
a.out test1.c test2.c tmp1.c tmp2.c tmp3.c
#

参考


Prev | Next
Home | Contents
abe@injapan.net