# shell笔记(6)——在变量中使用通配符 #

可以使用%、%%、#、##等在变量中进行通配符匹配。

## 1. 通配符 ##

```
//通配符
“*”：匹配任意字符串，包括空字符串，不包含对“/”字符的匹配。
“?”：匹配任意单个字符，不能匹配“/”字符。
//字符类
“[abc]”：匹配“a”或者“b”或者“c”字符。
“[!abc]”：匹配除了“a，b，c”这3个字符之外的任意一个字符。
备注：字符类内不包含对“/”字符的匹配。
//字符范围
“[a-z]”：匹配26个英文小写字符中任意一个。
“[!a-z]”：匹配除了“26个英文小写字符”之外的任意一个字符。
备注：字符范围内不包含对“/”字符的匹配。
```

## 2. 实验 ##

```
$ a=a.b.c.d
#百分号代表从右往左非贪婪匹配，返回未匹配到的内容
$ echo ${a%.*}
a.b.c
#百分号代表从右往左贪婪匹配，返回未匹配到的内容
$ echo ${a%%.*}
a
#百分号代表从左忘右非贪婪匹配，返回未匹配到的内容
$ echo ${a#*.}
b.c.d
#百分号代表从左忘右贪婪匹配，返回未匹配到的内容
$ echo ${a##*.}
d
```

## 3. 批量编辑文件名 ##

```
#把文件名中所有小写字母改为大写字母
for var in `ls`; do mv -f "$var" `echo "$var" |tr a-z A-Z`; done
```
