linux模式表达式,Linux Shell通配符模式表达式

本文介绍了Linux Shell中常用的通配符,如星号(*)、问号(?)和字符类,并通过一系列实验展示了它们在匹配文件名时的应用。实验涵盖了基本的文件匹配和排除匹配。此外,还提到了locale设置对字符范围匹配的影响,以及如何匹配以点号(.)开头的隐藏文件。
摘要由CSDN通过智能技术生成

一、语法

1.1、通配符

“*”:匹配任意字符串,包括空字符串,不包含对“/”字符的匹配。

“?”:匹配任意单个字符,不能匹配“/”字符。

1.2、字符类

“[abc]”:匹配“a”或者“b”或者“c”字符。

“[!abc]”:匹配除了“a,b,c”这3个字符之外的任意一个字符。

备注:

字符类内不包含对“/”字符的匹配。

1.3、字符范围

“[a-z]”:匹配26个英文小写字符中任意一个。

“[!a-z]”:匹配除了“26个英文小写字符”之外的任意一个字符。

备注:

字符范围内不包含对“/”字符的匹配。

二、实验

当前目录结构如下:

1

2

3

4

5├── 10.txt

├── 1.txt

├── aa.txt

├── a.txt

├── c

2.1、实验1

执行ls *.txt命令,得到:

110.txt 1.txt aa.txt a.txt

2.2、实验2

执行ls ?.txt命令,得到:

11.txt a.txt

2.3、实验3

执行ls [0-9].txt命令,得到:

11.txt

2.4、实验4

执行ls [012].txt命令,得到:

11.txt

2.5、实验5

执行ls [!0-9].txt命令,得到:

1a.txt

2.6、实验6

执行ls [!789]?.txt命令,得到:

110.txt aa.txt

三、其他

3.1、“locale”设置影响

“字符范围”所能匹配的字符跟“locale”设置息息相关。比如在有些“locale”设置中,“[a-d]”等价于“abcd”,而在有些“locale”设置中,“[a-d]”等价于“[aBbCcDd]”。

3.2、一个匹配特殊点

想要使用“Linux Shell通配符模式表达式”匹配以“.”开头的文件,对于该开头“.”字符:必须显式指定“.”字符进行匹配,尝试使用“通配符”,“字符类”,“字符范围”匹配该开头“.”字符会失败。

比如在当前目录下有一个“.a.txt”文件,使用如下类似命令都不能打印该文件:

1

2

3ls *

ls [.]*

ls [.-9]*

只有使用如下类似命令才能打印该文件:

1

2

3ls .*

ls .[a]*

ls .[a-z]*

参考文献:

[1]man 7 glob

[2]man 3 glob

[3]man sh

[4]man bash

[5]http://stackoverflow.com/questions/43862113/what-is-returned-after-pathname-expansion-in-shell?noredirect=1#comment74803794_43862113

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值