通配符
通配符是shell在做Path name Expansion时用到的,即通配符一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等
通配符 | 含义 |
---|---|
* | 匹配任意长度的任意字符 |
? | 匹配任意单个字符 |
[] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
常用通配符
匹配任意单个字母 [a-z] [[:alpha:]]
匹配任意单个数字 [0-9] [[:digit:]]
匹配任意单个字母或数字 [0-9a-z] [[:alnum:]]
匹配所有大写字母 [[:upper:]]
匹配所有小写字母 [[:lower:]]
匹配标点符号 [[:punct:]]
匹配空白字符 [[:space:]]
练习
- 显示/var目录下所有以一个1开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录
ls -d /var/1?[[:lower:]]
- 显示/etc下,以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[0-9]*[^0-9]
- 显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录
ls -d /etc/[^a-z][a-z]*
- 复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tm/magedu.com目录
cp -r /etc/m*[^0-9] /tmp/magedu.com
- 复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下
cp -r /usr/share/man/man[0-9] /tmp/man
- 显示/etc/下,所有以.conf结尾,且以nmpl任意一个字母开头的文件
ls /etc/[nmpl]*.conf
显示目录不要忘记加-d;递归复制不要忘记加-r