【Linux】命令行通配符

Linux在文件管理方面提供了丰富的功能,例如通配符,它是一种用于匹配文件名的特殊字符。通配符在Linux中可以帮助我们更加方便和快捷地查找和操作文件。

1.命令行通配符

通配符是一种特殊语句,主要有星号(*)、问号(?)等表示,用来模糊搜索文件,当查找目录或文件时,可以使用通配符来代替一个或多个真正字符。

作用范围:目录和文件名。

常见通配符:常用通配符包括 *、? 、 \^ ! 和{},具体含义见下表。

|-----------------|-----------------------------------------------------------------------------|
| 字符 | 含义 |
| * | 匹符配任意字符(任意长度和任意字符) |
| ? | 匹配单个的任意字符 |
| \[\] | 匹配方括号中的任意一个,不能用于创建目录和文件 |
| \^ | 匹配方括号中的任意一个字符或数字后进行取反,等同于! ,表示范围可以".."或"---",用于查找和删除目录和文件,不用于创建目录和文件 |
| ! | 匹配方括号中的任意一个字符或数字后进行取反, 等同于\^ ,表示范围可以".."或"---", 用于查找和删除目录和文件,不用于创建目录和文件 |
| ?-? | 匹配方括号范围内任意一个,用于查询、删除,但不能用于创建目录和文件 |
| {string,string} | 匹配括号中的任意一个字符串,表示一个范围时,字符串之间个".." |

相信看了这个表,你还是有一点懵,没事,我们下面接着讲

1.1.*

星号(*)通常用于匹配任何字符,包括数字、字母和符号。你可以使用星号指定应用程序需要查找的字符相应位置的任何字符。

例如,如果要显示目录中所有的.c后缀的文件,则可以使用以下命令:

我们还可以将*放到中间去

如果你想放到前面也是可以的,

我们还可以借助*来删除文件

*可以匹配任意长度的任意字符!!怎么样,强大吧!

此外*可以匹配空字符!!!

1.2.?

这个就没有上面的*强大了,上面的是匹配任意长度的任意字符,但是这个?就是只能匹配1个任意字符(不包括空字符)

问号(?)通配符匹配文件名中单个字符。在文件名中,问号占用了字符位置,能够匹配任何字符。

我们来使用一下

我们还可以用它来删除文件

?字符代表单个字符。如果匹配多个字符,就需要多个?连用。

注意,?不能匹配空字符。也就是说,它占据的位置必须有字符存在。

1.3.\[\]

中括号(\[\])通配符:用于指定一个字符范围,匹配其中的任意一个字符。

我给大家看几个例子

  1. abcd 匹配abcd中任何一个字符,abcd也可以是其他任意不连续字符
  2. a-z\] 匹配a到z之间的任意一个字符,字符前后要连续,也可以使用连续数字\[1-9

例如,使用命令ll abc来列出文件名是a,b,c的文件,ll a-c也是一样的

我们也可以用它来删除

方括号(\[\])通配符用于匹配指定字符集范围中的一个字符。如果需要匹配一小段字符集范围,可以使用该通配符。

还可以使用逗号来列举多个字符范围,例如0-9a-f表示数字0-9和小写字母a-f。

我们可以使用这个来删除

1.4.{}

花括号({})通配符提供一种在Linux中生成文件名的方法。若文件名中有几个不同的选项,就可以使用此通配符。它会自动将多个选项组合成唯一的字符串。

这个就比较有意思了

1.5.\^...!...

\^...!...表示匹配不在方括号里面的字符(不包括空字符)。这两种写法是等价的。

此外,下面这两种写法是一样的

1.6.{...}模式

表示匹配大括号里面的所有模式,模式之间使用逗号分隔。

注意不能使用-来标识连续字符,得用...来标识

1.7.注意点

通配符只适用于单层路径。

上面所有通配符只匹配单层路径,不能跨目录匹配,即无法匹配子目录里面的文件。或者说,?*这样的通配符,不能匹配路径分隔符(/

如果要匹配子目录里面的文件,可以写成下面这样。

相关推荐
MetrixAeroCore4 分钟前
出海餐厅手持POS机物联网卡:多币种计费稳定传输与跨境税务合规对接方案
运维
路由侠内网穿透.6 分钟前
本地部署开源日志收集系统 Log Bull 并实现外部访问
运维·服务器·网络·数据库·开源
时空无限19 分钟前
linux mellanox 网卡队列 irq rps 相关
linux·运维
AlbertS40 分钟前
Let‘s Encrypt 证书自动续期并自动应用到Nginx
运维·nginx·ssl·cerbot·renew·续期
kdxiaojie43 分钟前
Linux 驱动研究 —— V4L2 (14)
linux·运维·笔记·学习
IMPYLH44 分钟前
HTML 的 <dl> 元素
linux·windows·html
如若1231 小时前
Ubuntu 无 sudo 安装花生壳并实现 SSH 内网穿透:Conda 环境部署、冲突排查与自动启动
linux·运维·ubuntu·ssh·内网穿透
承渊政道1 小时前
Linux系统学习【掌握Ext系列⽂件系统的相关内容】
linux·运维·学习·文件系统·存储结构·inode
未知违规用户1 小时前
大模型项目: 学习FastAPI 服务器开发
服务器·人工智能·python·学习·fastapi
池以遇1 小时前
云原生——LVS
运维·云原生·lvs