shell通配符

常用的通配符有四种:
* 匹配任意字符0次或多次出现。
例如,f*可以匹配以f 打头的任意字符串。但应注意,文件名前面的圆点( . ) 和路径名中的斜线( / )必须显式匹配。

? 匹配任意一个字符,例如,f ?匹配f1、fa、fb等,但不能匹配 f 、fabc、 f12等。

[ ] 其中有一个字符组,它匹配该字符组所限定的任何一个字符。该字符组可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间一个连字符(-)组成。例如,f[a-d]与f[abcd]作用相同。

! 表示不在一对方括号中所列出的字符。例如,f[!1—9].c 表示以f打头,后面一个字符不是数字1至9的.c文件名
,它匹配fa.c、fb.c、fm.c等。

在一个正则表达式中,可以同时使用“*”和“?”。


扩展模式匹配表达式
1. *(模式表) 匹配给定模式表中“模式”的0次或多次出现,各模式之间以“|”分开。例如,file*(.c|.o)将匹配文件file、file.c、file.o、file.c.c、file.0.0、file.c.o、file.o.c等,但不匹配file.h或file.s等。

2. +(模式表) 匹配给定模式表中“模式”的1次或多次出现,各模式之间以“|”分开。例如,file+(.c | .o)匹配文件file.c、file.o、file.c.o、file.c.c等,但不匹配file。

3.   ?(模式表) 匹配模式表中任何一种“模式”的0次或1次出现,各模式之间以“|”分开。例如,file?(.c|.o)只匹配file、file.c和file.0,它不匹配多个模式或模式的重复出现,即不匹配file. c. c、file. c. 0等。

4.   @(模式表) 仅匹配模式表中给定“模式”的一次出现,各模式之间以“|”分开。例如,file@(.c|.0)匹配file.c和file.0,但不匹配file、file.c.c、file.c.o等。

5.   !(模式表) 除给定模式表中的一个“模式”之外,它可以匹配其它任何东西。


可以看出,模式表达式的定义是递归的,每个表达式中都可以包含一个或多个模式。例如file*( .[cho]|.sh)是合法的模式表达式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值