当前位置: 代码网 > 服务器>服务器>Linux > linux中通配符种类,通配符的使用方式详解

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

2025年04月17日 Linux 我要评论
前言在使用linux时,往往会使用linux built-in命令find、ls等对当前的文件或者目录进行查找、显示、检索等,当不知道全名,只使用其中某个或某几个字符操作时,就可以使用通配符来代替和补

前言

在使用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的使用过程中,掌握通配符往往可以事半功倍。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com