bash支持的“字符集”功能。[abc]表示a, b, c中的任何一个字符。[a-z]表示所有小写英文字母中的任何一个。[!a-z]表示所有小写英文字母以外的任何字符。注意“除...外”是用方括号内第一个叹号表示,sed所用的正则表达式中则用^符号表示“除去”。
$ ls
best.dat foot.dat lest.dat nest.dat rest.dat test.dat
$ ls [!a-m]est.dat
nest.dat rest.dat test.dat
bash的“花括号扩展”功能。直接看例子吧:
$ echo a{b,c}{d,e}f
abdf abef acdf acef
花括号还可以嵌套:
$ echo a{b{c,d,e},f{g,h}}i
abci abdi abei afgi afhi
这个功能不是华而不实的,比如要找所有的源文件,把下面echo换成ls就达到目的:
$ echo test.{h,cpp,c,hpp,o}
test.h test.cpp test.c test.hpp
不过这样用的时候要小心ls可能输出一些错误信息:
$ ls *.{h,cpp,c,hpp,o,s}
ls: cannot access *.o: No such file or directory
ls: cannot access *.s: No such file or directory
a.c a.cpp a.h a.hpp b.cpp b.h
$
阅读(712) | 评论(0) | 转发(0) |