globbing:文件名通配
globbing
:文件名通配(整体文件名匹配,而非部分),BASH
支持文件名通配。
1. 匹配模式: 元字符
*:匹配任意长度的任意字符
?:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
有几种特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]: 所有大写字母
[[:lower:]]: 所有小写字母
[[:alpha:]]: 所有字母
[[:digit:]]: 所有数字
[[:alnum:]]: 所有的字母和数字
[[:space:]]: 所有空白字符
[[:punct:]]: 所有标点符号
[^]: 匹配指定范围外的任意单个字符
2. 例子
-
显示
/var
目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录ls -d /var/l?[[:lower:]]
-
显示
/etc
目录下,以任意一位数字开头,且以非数字结尾的文件或目录ls -d /etc/[0-9]*[^0-9]
-
显示
/etc
目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或目录ls -d /etc/[^a-z][a-z]*
-
复制
/etc
目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/etc
目录mkdir /tmp/etc cp -r /etc/m*[^0-9] /tmp/etc/
-
复制
/usr/share/man
目录下,所有以man
开头,后跟一个数字结尾的文件或目录至/tmp/man/
目录下mkdir /tmp/man cp -r /usr/share/man/man[0-9] /tmp/man
-
复制
/etc
目录下,所有以.conf
结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/
目录下mkdir /tmp/conf.d cp -r /etc/[mnrp]*.conf /tmp/conf.d/