文件通配符与正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件通配符与正则表达式相关的知识,希望对你有一定的参考价值。
文件通配符与正则表达式文件通配符:
*********************************************************
??? * 匹配零个或多个字符
??? ? 匹配任何单个字符
??? [0-9] 匹配数字范围
??? [a-z] 字母? (注: [a-z] 匹配的字母并非全是小写字母)
??? [A-Z] 字母? (注: [A-Z] 匹配的字母并非全是大写字母)
??? [wang] 匹配列表中的任何的一个字符
??? [^wang] 匹配列表中的所有字符以外的字符
??? 预定义的字符类(man 7 glob)
??? [:digit:]:任意数字,相当于0-9
??? [:lower:]:任意小写字母
??? [:upper:]: 任意大写字母
??? [:alpha:]: 任意大小写字母
??? [:alnum:]:任意数字或字母
??? [:blank:]:水平空白字符
??? [:space:]:水平或垂直空白字符
??? [:punct:]:标点符号
=========================================================
补充说明:文件通配符通常用于查找文件,而正则表达式通常用于查找文件内容
=========================================================
示例如下:
??? 1、显示示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
????? # ls -d /var/l*[[:digit:]]*[[:lower:]]
??? 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
????? # ls -d /etc/[[:digit:]]*[^[:digit:]]
??? 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
????? # ls -d /etc/[^[:alpha:]][[:alpha:]]*
??? 4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
????? # ls -d /etc/rc[0-6]*
??? 5、显示/etc目录下,所有以.d结尾的文件或目录
????? # ls -d /etc/*.d
??? 6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
????? # ls -d /etc/[mnrp]*.conf
??? 7、只显示/root下的隐藏文件和目录
????? # ls -d /root/.[^.]*
??? 8、只显示/etc下的非隐藏目录
????? # ls -d /etc/*/
========================================================================================
知识延伸: ls -d选项的使用说明:
查看某目录的长列表信息时要是用使用-d选项:# ls -dl dir1 ,如果不加-d选项会显示目录下的文件列表信息
ls -dl /dir/*? 使用-d选项显示当前目录下的文件或目录,但不会递归显示字母目录
ls -dl /dir/*/ 显示dir目录下的非隐藏文件夹要使用*/
========================================================================================
正则表达式:
基本正则表达式元字符
字符匹配:
*********************************************************
??? . 匹配任意单个字符 (通配符使用?作为单个字符匹配)
??? [] 匹配指定范围内的任意单个字符
??? [^] 匹配指定范围外的任意单个字符
??? [:alnum:] 字母和数字
??? [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
??? [:lower:] 小写字母 [:upper:] 大写字母
??? [:blank:] 空白字符(空格和制表符)
??? [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
??? [:digit:] 十进制数字
??? [:punct:] 标点符号
*********************************************************
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
*********************************************************
??? * 匹配前面的字符任意次,包括0次
??? 贪婪模式:尽可能长的匹配
??? .* 任意长度的任意字符
??? \? 匹配其前面的字符0或1次
??? \+ 匹配其前面的字符至少1次
??? \{n\} 匹配前面的字符n次
??? \{m,n\} 匹配前面的字符至少m次,至多n次
??? \{,n\} 匹配前面的字符至多n次
??? \{n,\} 匹配前面的字符至少n次
*********************************************************
位置锚定:定位出现的位置
*********************************************************
??? ^ 行首锚定,用于模式的最左侧
??? $ 行尾锚定,用于模式的最右侧
??? ^PATTERN$ 用于模式匹配整行
??? ^$ 空行
??? ^[[:space:]]*$ 空白行
??? \< 或 \b 词首锚定,用于单词模式的左侧
??? \> 或 \b 词尾锚定;用于单词模式的右侧
??? \<PATTERN\> 匹配整个单词
*********************************************************
??? 扩展正则表达式与标准正则表达式的区别在省略了转义字符\,如下:
??? ?: 0或1次 (标准正则:\?)
??? +:1次或多次(标准正则:\+)
??? {m}:匹配m次(标准正则:\{m\})
??? {m,n}:至少m,至多n次(标准正则:\{m,n\})
??? 分组:()(标准正则:\(\))
以上是关于文件通配符与正则表达式的主要内容,如果未能解决你的问题,请参考以下文章