找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3452

积分

0

好友

462

主题
发表于 14 小时前 | 查看: 1| 回复: 0

在 Linux 系统中进行日常操作时,你是否曾因需要处理大量文件而感到烦恼?手动一个个输入文件名不仅低效,还容易出错。幸运的是,Linux 命令行提供了强大的通配符功能,它们就像处理文件时的“万能钥匙”,能让你在批量操作时效率倍增。今天,我们就来彻底搞懂这些看似简单却极其有用的符号。

什么是通配符?

通配符是命令行中用来匹配文件名的特殊字符。它们可以代表一个或多个未知字符,帮助我们快速定位和操作一组符合特定模式的文件,而无需逐个指定完整的文件名。这在进行运维和系统管理任务时尤为高效。

常用五大核心通配符详解

1、星号 * —全能匹配王

代表: 零个或多个任意字符
使用频率: ★★★★★

这个符号大家应该最熟悉,它的匹配能力最强。

# 列出所有.sh文件
ls *.sh

列出所有 .sh 后缀的脚本文件

# 删除所有以"log"开头的文件
rm log*

删除所有以 log 开头的文件操作示例

# 匹配所有文件(危险操作,请谨慎使用)
rm *   # 谨慎操作,非常危险

适用场景: 批量重命名、批量删除、批量复制某一类文件。

2. 问号 ? —精准单字匹配

代表: 恰好一个任意字符
使用频率: ★★★★☆

问号用于精确匹配一个字符的位置,非常适合文件名长度固定的情况。

# 只匹配以1开头的、文件名恰好为两位数的 .txt 文件
ls 1?.txt

匹配以1开头的两位数.txt文件

# 匹配文件名恰好为两个字符的.txt文件
ls ??.txt

匹配文件名为两个字符的.txt文件

适用场景: 文件名长度固定、某个位置字符不确定时。

3. 方括号 [ ] — 范围选择器

代表: 括号内指定的任意一个字符
使用频率: ★★★☆☆

方括号可以指定一个字符的选择范围,非常灵活。

# 匹配文件名为1.txt或2.txt的文件
ls [12].txt    #文件名是1或者2的txt文件

匹配 1.txt 或 2.txt 文件

# 匹配文件名是单个小写字母的.txt文件
ls [a-z].txt

匹配 a.txt 到 z.txt 的小写字母文件

# 匹配以数字结尾的.txt文件
ls *[0-9].txt   #匹配以数字结尾的txt文件

匹配以数字结尾的.txt文件

常见范围写法:

  • [a-z] → 任意小写字母
  • [A-Z] → 任意大写字母
  • [0-9] → 任意数字
  • [abc] → a、b或c中的任意一个

4. 惊叹号 ! —反向排除

代表: “除了这些字符”
使用频率: ★★☆☆☆

惊叹号用在方括号内,表示取反,即匹配除了指定字符以外的字符。

# 匹配除了最后一位是数字1结尾以外的所有.txt文件
ls *[!1].txt

匹配最后一位不是1的.txt文件

# 匹配不以数字结尾的.txt文件
ls *[!0-9].txt    #显示不以数字结尾的文件

匹配不以数字结尾的.txt文件结果

5. 花括号 { } — 组合生成器

功能: 批量生成文件名/路径扩展
使用频率: ★★★☆☆

花括号不是用来匹配已有文件,而是用来生成一系列字符串,常与创建、复制等命令联用。

# 同时创建三个目录:1, 2, 3
mkdir {1,2,3}

使用花括号同时创建三个目录

# 生成数字序列 1 到 10
echo {1..10}     #直接输出1-10

使用花括号生成1到10的数字序列

实战案例:看高手如何运用

案例一:整理图片文档

假设你有一批图片文件:10.jpg11.jpg12.jpg ... 19.jpg,现在想将它们快速移动到 ceshi 目录。

# 使用花括号快速创建测试文件(仅演示用)
touch {10..19}.jpg
# 使用问号精确移动文件名为两位数的图片
mv 1?.jpg ceshi/

创建测试图片并移动至ceshi目录

当然,对于这个简单任务,用星号会更直接:mv *.jpg ceshi/。但 ? 在需要更精确控制时非常有用。

案例二:智能清理日志

服务器上积累了按日期命名的日志文件,如 log_20260201.loglog_20260202.log ... 你需要清理它们。

# 删除2026年2月份的所有日志
rm -rf 202602*.log    #生产环境建议先备份再删除

删除匹配202602*.log模式的所有日志文件

# 保留1-5号的日志,删除2月份其余日期的日志
rm -rf log_202602[!1-5].log

删除2月份非1-5号的日志文件

重要安全提醒

黄金法则:先查看,再操作

通配符虽好,但用错后果很严重,尤其是在执行 rmmv 等破坏性命令时。

# 错误示范(危险!):
rm *.txt      #未确认前直接删除,可能导致数据丢失

# 正确做法:
ls *.txt      # 先用 ls 看看会匹配哪些文件,确认无误
rm *.txt      # 确认无误后再执行删除操作

其他注意事项:

  1. 隐藏文件要小心* 默认不会匹配以点 . 开头的隐藏文件(如 .config)。若要操作隐藏文件,需要显式指定,例如 rm .*(此命令同样危险,需极其谨慎)。
  2. 转义特殊字符:如果你真的想操作一个名字就叫 *.txt 的文件,需要对通配符进行转义:rm \*.txt
  3. 区分通配符与正则表达式
    • 通配符:主要用于文件名匹配,语法相对简单(本文所讲)。
    • 正则表达式:主要用于文本内容匹配(如 grepsed),功能更强大但也更复杂。两者语法有相似之处,但并非一回事。

效率提升与进阶技巧

设置安全模式

在编写复杂的脚本时,为了防止通配符意外扩展,可以临时禁用它。

set -f    # 禁用通配符扩展(更安全)
set +f    # 重新启用通配符扩展

组合使用技巧

将多个通配符组合,可以实现更精细的匹配。

# 删除所有以“temp”开头、中间包含数字、以“.tmp”结尾的临时文件
rm -rf temp*[0-9]*.tmp

删除包含数字的临时.tmp文件

小结

通配符 含义 使用场景
* 任意多个字符 批量操作同类文件
? 单个任意字符 精确控制文件名长度
[abc] a/b/c中任一个 有限范围选择
[!x] 除了x 反向排除
{a,b} a和b组合 生成多个文件名/路径

总结

熟练掌握 Linux 通配符,就如同为你的命令行装上了高效的“批量处理器”。从简单的 *.txt 到复杂的组合模式,这些符号能帮你应对各种文件管理场景。核心要点是:理解每个符号的匹配规则,并在执行关键操作前养成 ls [pattern] 先预览的好习惯。

希望这份指南能帮你更高效地管理文件。实践是掌握的最佳途径,下次遇到批量文件任务时,不妨尝试用通配符来解决。如果你想深入探讨更多命令行技巧或系统管理知识,欢迎在专业的云栈社区进行交流分享。




上一篇:PHP AOP框架实战:基于原生Attribute实现面向切面编程与代码解耦
下一篇:高德百度地图出海观察:海外用户实测车道级导航与红绿灯倒计时
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-1 18:53 , Processed in 0.382703 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表