ファイル名の正規表現
正規表現とは
シェルのコマンドラインで、
lsである特定の種類のファイルだけ表示したい時や、
viその他のコマンドで複数のファイルを指定する時に
次のようなメタキャラクターが使用できる。
- *
- 0文字以上の任意の文字列
0文字以上なので、文字が無くてもマッチする。
たとえばa*は
a, aa, abcde, a123
などとマッチする。
- ?
- 任意の1文字
たとえば ??? は
aaa, abc, 123
などとマッチする。
- [...]
- []の中の1文字
たとえば [abc]ee は
aee, bee, cee
とマッチする。
ただし、アルファベット、数字の続いた部分は次のようにも表現できる
- [a-e]
- [abcde] と同じ
- [1-5]
- [12345] と同じ
- [A-Za-z]
- 大文字、小文字を含んだアルファベット全部
- {str1,str2,...}
- str1,str2...中の文字列の一つ
たとえば {abc,def}gg は
abcgg, defgg
とマッチする。
上のメタキャラクターは組み合わせて使用できる。
例
# ls
a.out test1.c test2.c
tmp1.c tmp2.c tmp3.c
# ls *.c
test1.c test2.c tmp1.c tmp2.c tmp3.c
# ls ????.c
tmp1.c tmp2.c tmp3.c
# ls tmp[23].*
tmp2.c tmp3.c
# ls *[23].*
test2.c tmp2.c tmp3.c
# ls *[A-Za-z].???
a.out
# ls {a,tmp}.*
a.out tmp1.c tmp2.vp
# echo * <- lsの代わり
a.out test1.c test2.c tmp1.c tmp2.c tmp3.c
#
参考
- 正規表現
- 「続・たのしいUNIX」 p.4 ~ p.13
Prev | Next
Home | Contents
abe@injapan.net