1. glob:文件名通配;匹配模式:元字符;详细说明请参见Linux官方说明问题;命令:man glob。
1.1. *:匹配任意长度的任意字符
1.2. ?:匹配任意单个字符
1.3. []:匹配指定范围内的任意单个字符
有几种特殊格式:
- [a-z]
- [A-Z]
- [0-9]
- [a-z0-9]
- [[:upper::]]:所有大写字符
- [[:lower:]]:所有小写字符
- [[:alpha:]]:所有字母
- [[:digit:]]:所有数字
- [[:alnum:]]:所有字母和数字,This is equivalent to A-Za-z0-9.
- [[:space:]]:所有空白字符
- [[:blank:]]:所有空白或tab
- [[:punct::]]:所有标点符号
- [[:xdigit:]]:所有十六进制,This is equivalent to 0-9A-Fa-f.
- [[:print:]]:可打印字符,Matches characters in the range of ASCII 32 - 126. This is the same as [:graph:], above, but adding the space character.
- [:graph:] (graphic printable characters). Matches characters in the range of ASCII 33 - 126. This is the same as [:print:], below, but excluding the space character.
1.4. [^]或[!]:匹配指定范围外的任意单个字符
1.5. {…}:匹配大括号里面的所有模式,模式之间使用逗号分隔
1.6. {start…end}:匹配连续范围的字符
2. 练习:
2.1. 显示/var目录所有以1开头,以小写字母结尾,且中间出现一位任意字符的文件或目录
1 | ubuntu@YAITZA:~$ ls -d /var/l?[a-z] |
2.2. 显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录
1 | ls -d /etc/[0-9]*[^0-9] |
2.3. 显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录
1 | ls -d /etc/[^[:alpha:]][[:alpha:]]* |
2.4. 复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录
1 | cp -r /etc/m*[^0-9] /tmp/test |
2.5. 复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下
1 | cp -r /usr/share/man/man[0-9] /tmp/man |
2.6. 复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d目录下
1 | cp -r /etc/[mnrp]*.conf /tmp/conf.d |