linux之通配符

本文介绍了通配符的基本概念及其在文件名匹配中的应用,包括*、?和[]等符号的具体用法,并对比了通配符与正则表达式的区别。

通配符: 一种特殊的语句,主要用来模糊搜索文件。主要包含"*“号,”?"号等。

  • "*"符号:代表0个或者多个字符。例如在一个目录下,搜索以.csv结尾的文件
[root@node1 data]# ll
-rwx------ 1 root root 385565005 11月 13 12:50 aa.csv
-rwx------ 1 root root   6777014 11月 12 17:19 bb.csv
-rwx------ 1 root root   6727014 11月 12 17:19 cc.txt
[root@node1 data]# ls *.csv
aa.csv  bb.csv
  • "?"符号:代表任意一个字符.例如想要搜索以b字母开头,但是只有两个字母的文件名,并以.doc结尾的文件名
[root@node1 data]# ll
-rwx------ 1 root root 385565005 11月 13 12:50 aa.csv
-rwx------ 1 root root   6777014 11月 12 17:19 bb.csv
-rwx------ 1 root root   6727014 11月 12 17:19 cc.txt
[root@node1 data]# ls b?.csv
bb.csv
  • "[]"符号:匹配括号内包含的任一字符
[root@node1 test]# ll
总用量 16
-rw-rw-r-- 1 root root 2 4月  20 17:04 ac.csv
-rw-rw-r-- 1 root root 4 4月  20 17:03 a.csv
-rw-rw-r-- 1 root root 2 4月  20 17:04 ba.csv
-rw-rw-r-- 1 root root 2 4月  20 17:04 ca.csv
[root@node1 test]# ll [abc].csv
-rw-rw-r-- 1 root root 4 4月  20 17:03 a.csv
  • “^“符号和”!”:通常与[]一起使用,代表取反
[root@node1 test]# ll
总用量 16
-rw-rw-r-- 1 root root 2 4月  20 17:04 a.csv
-rw-rw-r-- 1 root root 4 4月  20 17:03 A.CSV
-rw-rw-r-- 1 root root 2 4月  20 17:04 B.csv
-rw-rw-r-- 1 root root 2 4月  20 17:04 C.CSV
[root@node1 test]# ll [^ABC].csv
-rw-rw-r-- 1 root root 2 4月  20 17:04 a.csv
[root@node1 test]# ll [!ABC].csv
-rw-rw-r-- 1 root root 2 4月  20 17:04 a.csv

从上面的符号可知,通配符与正则表达式存在一些相同的字符,极易造成干扰。两者的区别在于:正则表达式主要用于对文件内容的匹配上,而通配符主要是用在文件名的匹配上

### Linux Shell 通配符使用指南 在 Linux Shell 中,通配符是一种强大的工具,用于匹配文件名或其他字符串模式。以下是常见的通配符及其用法: #### 1. 星号 (`*`) 星号表示匹配零个或多个任意字符。它可以用来匹配任何长度的字符串(包括空字符串)。 例如: ```bash ls *.txt ``` 该命令会列出当前目录下所有扩展名为 `.txt` 的文件[^1]。 #### 2. 问号 (`?`) 问号表示匹配单个任意字符。如果需要查找固定长度但某些位置不确定的文件名,可以用这个通配符。 例如: ```bash ls note?.md ``` 此命令会匹配类似于 `note1.md` 或 `noteA.md` 这样的文件名称。 #### 3. 方括号 (`[]`) 方括号内的字符集合表示匹配其中任何一个字符。可以指定范围或具体字符列表来缩小匹配条件。 例如: ```bash ls file[0-9].log ``` 这条命令只会找到像 `file1.log`, `file2.log` 等这样的文件,而不会匹配其他不符合 `[0-9]` 范围的内容。 #### 4. 大括号 (`{}`) 大括号允许定义一组明确的选择项,而不是连续区间。这通常用于更复杂的组合情况。 例如: ```bash cp backup.{sql,bak} /backup/ ``` 这一操作相当于分别执行了两条复制指令:`cp backup.sql /backup/` 和 `cp backup.bak /backup/`[^1]。 #### 5. 波浪线 (`~`) 波浪线作为用户的家目录快捷路径标志。单独使用时表示当前登录用户的主目录;后面接用户名,则指向对应账户下的个人空间地址。不过严格来说这不是传统意义上的“通配”,但在实际应用中有类似功能效果。 另外需要注意的是,在涉及正则表达式的场景里(如grep),`.`是一个特殊的元字符代表任一单一字符而非字面意义的小圆点,所以当我们要确切寻找包含“.docx”的文档时就需要通过前面提到过的转义机制处理成`\.`形式[^4]。 以上就是关于Linux Shell环境下几种主要类型的通配符介绍以及它们各自的应用实例解析说明。 ```bash # 示例代码展示如何利用这些通配符 find . -name "*.conf" # 查找当前目录及其子目录中所有.conf结尾配置文件 mv data?? results/ # 将data开头后面紧跟两位未知字符组成的文件移动至results文件夹内 touch {a..z}.test # 创建从a.test一直到z.test共26个小写字母命名测试文本档 echo $HOME # 输出环境变量HOME所指代的具体绝对路劲即为~展开后的全貌呈现 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永远不要矫情

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

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

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

打赏作者

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

抵扣说明:

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

余额充值