linux中通配符种类,通配符的使用方法


前言

在使用linux时,往往会使用Linux built-in命令findls等对当前的文件或者目录进行查找、显示、检索等,当不知道全名,只使用其中某个或某几个字符操作时,就可以使用通配符来代替和补全余下对象的字符、字符串。下文介绍了笔者工作时用到的关于通配符的相关知识和使用方法。


一、通配符、及其分类

  1. 关于什么通配符,下网页很好的介绍了这部分内容,不做赘述
简介path
百度词条link
同行笔者Linux 通配符 与 正则表达式 的区别与详解:link
  1. 通配符知识部分总结
符号释义说明
*表示零个或多个字符下划线’_‘、小数点’.‘、空格’ 也是字符,下同
一个字符
[]中括号,匹配中括号里面字符中的任意一个[abc]表示可以匹配a、b和c,[abc]也是使用逗号在中括号中,[abc]等同于[a,b,c]
^!, 只能在中括号[]中使用,表示不匹配中括号中的任意字符[!abc]表示不匹配a、b、c)
{}匹配大括号中字符组合中的任何一个{ab,c,de}表示匹配ab、c、de中的任意一项){}属于通配符么?

字符:包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。来自字符百度词条 1

  1. 另外还有,指定匹配数字、字母(大写,小写)、数字或者字母、点或者下划线,等:
符号释义说明
[:digit:]匹配数字仅匹配一个
[:lower:]任意小写字母仅匹配一个
[:upper:]任意大写字母仅匹配一个
[:alpha:]任意字母仅匹配一个
[:alnum:]任意一个字母或数字仅匹配一个
[:space:]一个空格仅匹配一个
[:punct:]表示一个符号可以是键盘上的各种符号,包括但不限于@、#、_、\、(、)、^、&、~、.、?等符号,但是不包括空格、数字、字母

注释:1. 以上匹配都是匹配一个;2.使用使用需要用双中括号,用这样的形式 [[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:space:]] [[:punct:]]

二、通配符示例、案例

使用的linux的shebang是sh或者bash,不能使用tcsh或者csh

使用的文件有:

# 查看文件
sh-4.2$ ls *
1	1#2    '1(2'  '1*2'  12     '1?2'  '1\2'  1_2  1~2  A	A.TXT  A_ '1  2'	'1&2'  '1)2'  1.2    '1=2'  1@2    '1^2'  1ls  2    A.	A.txt  

示例:

sh-4.2$ ls
1	1#2    '1(2'  '1*2'  12     '1?2'  '1\2'  1_2  1~2  A	A.TXT  A_ '1  2'	'1&2'  '1)2'  1.2    '1=2'  1@2    '1^2'  1ls  2    A.	A.txt  

sh-4.2$ ls *
1	1#2    '1(2'  '1*2'  12     '1?2'  '1\2'  1_2  1~2  A	A.TXT  A_ '1  2'	'1&2'  '1)2'  1.2    '1=2'  1@2    '1^2'  1ls  2    A.	A.txt 

## [[:digit:]][[:punct:]]? 表示数字符号字符
sh-4.2$ ls [[:digit:]][[:punct:]]?
1#2  '1&2'  '1(2'  '1)2'  '1*2'  1.2  '1=2'  '1?2'  1@2  '1\2'	'1^2'  1_2  1~2
### ??
sh-4.2$ ls ??
12  A.	A_
sh-4.2$ ls 1
1

sh-4.2$ ls 1*
1  '1  2'  1#2	'1&2'  '1(2'  '1)2'  '1*2'  1.2  12  '1=2'  '1?2'  1@2	'1\2'  '1^2'  1_2  1ls	1~2

sh-4.2$ ls 1?
12
### []内中字符的某一个
sh-4.2$ ls [12]
1  2

sh-4.2$ ls [1A]
1  A

### [!1A]不为1和A的一个字符
sh-4.2$ ls [!1A]
2
### {}字符组合,使用逗号隔开
sh-4.2$ ls {[1A],2}
1  2  A

sh-4.2$ ls {[1A],A_}
1  A  A_

sh-4.2$ ls {[[:digit:]],A_}
1  2  A_

sh-4.2$ ls {[[:digit:]][[:digit:]],A_}
12  A_
### [[:alnum:]]和[a-z0-9A-Z]同义
sh-4.2$ ls [[:alnum:]]
1  2  A

sh-4.2$ ls [[:upper:]]
A
###
sh-4.2$ ls A.[[:alpha:]][[:alpha:]][[:alpha:]]
A.TXT  A.txt

### . 点是punct中的一种,但是不包括空格
sh-4.2$ ls A[[:punct:]][[:alpha:]][[:alpha:]][[:alpha:]]
A.TXT  A.txt
### ?问号可以表示一个字符
sh-4.2$ ls ????
'1  2'

sh-4.2$ ls [[:digit:]][[:punct:]]?
1#2  '1&2'  '1(2'  '1)2'  '1*2'  1.2  '1=2'  '1?2'  1@2  '1\2'	'1^2'  1_2  1~2

### 空格是使用[[:space:]]来匹配
sh-4.2$ ls ?[[:space:]][[:space:]]?
'1  2'

注释:使用[[:digit:]] [[:lower:]] [[:upper:]] [[:alpha:]] [[:alnum:]] [[:space:]] [[:punct:]]时,如果同一个匹配超过一次,可以重复使用。

例如: [[:digit:]][[:digit:]]是合法的,但是[[:digit:]]+是不可以的


总结

该节是通配符的种类和使用用例的总结,在Linux的使用过程中,掌握通配符往往可以事半功倍。

念念不忘,必有回响


END


  1. 字符百度词条(https://baike.baidu.com/item/%E5%AD%97%E7%AC%A6/4768913?fr=ge_ala) ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weifexie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值