shell通配符匹配

当输入包含特殊字符(元字符)的部分文件名时,shell可以生成与已有文件名匹配的文件名。这些字符称为通配符(wildcard)就像扑克牌中的王牌一样无所不能。包含特殊字符的文件名称为模糊文件引用(ambiguous file reference),因为它们不引用任何一个特定文件。对这些文件名操作的过程称为扩展路径名(path expansion)或者通配(globbing)。

1、特殊字符“?”

问号(?)是shell生成文件名的特殊字符,它与已有文件名中的某字符匹配。

示例:使用ls

$  ls

mem   memo12   memo9    memomax    newmemo5   memo   memo5    memoa    memos

$  ls memo?

memo9  memo5  memoa  memos

问号也可以放在模糊文件引用的中间:

$  ls mem?max

memomax

2、特殊字符“*”

星号(*)的功能与问号相似,不同的地方在于,星号后面可以与文件名中的任意多个(包括0个字符匹配。

$  ls

amemo  memoalx.0612  memosally  memosam  user.memo  memo  memoa

memo.0620  sallymemo  memalx  memorandum  memoalx.keep  typescript

$  ls memo*

memoalx.0612  memosally  memosam  memo  memoa  memo.0620  memorandum  memoalx.keep

$  ls *mo

amemo  user.memo  memo  sallymemo

$  ls *sam*

memosam

3、特殊字符"[ ]"

用一对方括号将一个字符列表括起来使得shell与包含每一个字符的文件名进行匹配。“memo?”可匹配memo后跟任何一个字符的文件名,而方括号更严格些,memo[17a]仅与memo1、memo7和memoa匹配。

在字符类定义中,将连字符放在方括号中可以定义一个字符范围。如[6-9]代表[6789],[a-z]代表所有小写英文字母。[a-zA-Z]代表所有英文字母。

左方括号后直接跟感叹号(!)或插入符号(^)也可以定义字符集,该类与任何不在方括号内的字符匹配。

[^tsq]*表示不以t、s和q开头的文件名匹配。

$  ls

aa  ab  ac  ad  ba  bb  bd  be  cc  dd

$  ls  *[^ab]

ac  ad  bd  be  cc  dd

$  ls [^b-d]*

aa  ab  ac  ad

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值