开发者

linux中通配符种类,通配符的使用方式详解

目录
  • 前言
  • 一、通配符、及其分类
  • 二、通配符示例、案例
  • 总结

前言

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

下文介绍了笔者工作时用到的关于通配符的相关知识和使用方法。

一、通配符、及其分类

  1. 关于什么通配符,下网页很好的介绍了这部分内容,不做赘述
简介path
百度词条link
笔记Linux 通配符 与 正则表达式 的区别与详解:link
www.devze.com
  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:]一个空格仅匹配一个
[:punctandroid:]表示一个符号可以是键盘上的各种符号,包括但不限于@、#、_、\、(、)、^、&、~、.、?等符号,但是不包括空格、数字、字母

注释:

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?
12python
### []内中字符的某一个
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的使用过程中,掌握通配符往往可以事半功倍。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新运维

运维排行榜