在 Linux 系统中进行日常操作时,你是否曾因需要处理大量文件而感到烦恼?手动一个个输入文件名不仅低效,还容易出错。幸运的是,Linux 命令行提供了强大的通配符功能,它们就像处理文件时的“万能钥匙”,能让你在批量操作时效率倍增。今天,我们就来彻底搞懂这些看似简单却极其有用的符号。
什么是通配符?
通配符是命令行中用来匹配文件名的特殊字符。它们可以代表一个或多个未知字符,帮助我们快速定位和操作一组符合特定模式的文件,而无需逐个指定完整的文件名。这在进行运维和系统管理任务时尤为高效。
常用五大核心通配符详解
1、星号 * —全能匹配王
代表: 零个或多个任意字符
使用频率: ★★★★★
这个符号大家应该最熟悉,它的匹配能力最强。
# 列出所有.sh文件
ls *.sh

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

# 匹配所有文件(危险操作,请谨慎使用)
rm * # 谨慎操作,非常危险
适用场景: 批量重命名、批量删除、批量复制某一类文件。
2. 问号 ? —精准单字匹配
代表: 恰好一个任意字符
使用频率: ★★★★☆
问号用于精确匹配一个字符的位置,非常适合文件名长度固定的情况。
# 只匹配以1开头的、文件名恰好为两位数的 .txt 文件
ls 1?.txt

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

适用场景: 文件名长度固定、某个位置字符不确定时。
3. 方括号 [ ] — 范围选择器
代表: 括号内指定的任意一个字符
使用频率: ★★★☆☆
方括号可以指定一个字符的选择范围,非常灵活。
# 匹配文件名为1.txt或2.txt的文件
ls [12].txt #文件名是1或者2的txt文件

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

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

常见范围写法:
[a-z] → 任意小写字母
[A-Z] → 任意大写字母
[0-9] → 任意数字
[abc] → a、b或c中的任意一个
4. 惊叹号 ! —反向排除
代表: “除了这些字符”
使用频率: ★★☆☆☆
惊叹号用在方括号内,表示取反,即匹配除了指定字符以外的字符。
# 匹配除了最后一位是数字1结尾以外的所有.txt文件
ls *[!1].txt

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

5. 花括号 { } — 组合生成器
功能: 批量生成文件名/路径扩展
使用频率: ★★★☆☆
花括号不是用来匹配已有文件,而是用来生成一系列字符串,常与创建、复制等命令联用。
# 同时创建三个目录:1, 2, 3
mkdir {1,2,3}

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

实战案例:看高手如何运用
案例一:整理图片文档
假设你有一批图片文件:10.jpg, 11.jpg, 12.jpg ... 19.jpg,现在想将它们快速移动到 ceshi 目录。
# 使用花括号快速创建测试文件(仅演示用)
touch {10..19}.jpg
# 使用问号精确移动文件名为两位数的图片
mv 1?.jpg ceshi/

当然,对于这个简单任务,用星号会更直接:mv *.jpg ceshi/。但 ? 在需要更精确控制时非常有用。
案例二:智能清理日志
服务器上积累了按日期命名的日志文件,如 log_20260201.log, log_20260202.log ... 你需要清理它们。
# 删除2026年2月份的所有日志
rm -rf 202602*.log #生产环境建议先备份再删除

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

重要安全提醒
黄金法则:先查看,再操作
通配符虽好,但用错后果很严重,尤其是在执行 rm、 mv 等破坏性命令时。
# 错误示范(危险!):
rm *.txt #未确认前直接删除,可能导致数据丢失
# 正确做法:
ls *.txt # 先用 ls 看看会匹配哪些文件,确认无误
rm *.txt # 确认无误后再执行删除操作
其他注意事项:
- 隐藏文件要小心:
* 默认不会匹配以点 . 开头的隐藏文件(如 .config)。若要操作隐藏文件,需要显式指定,例如 rm .*(此命令同样危险,需极其谨慎)。
- 转义特殊字符:如果你真的想操作一个名字就叫
*.txt 的文件,需要对通配符进行转义:rm \*.txt。
- 区分通配符与正则表达式:
- 通配符:主要用于文件名匹配,语法相对简单(本文所讲)。
- 正则表达式:主要用于文本内容匹配(如
grep, sed),功能更强大但也更复杂。两者语法有相似之处,但并非一回事。
效率提升与进阶技巧
设置安全模式
在编写复杂的脚本时,为了防止通配符意外扩展,可以临时禁用它。
set -f # 禁用通配符扩展(更安全)
set +f # 重新启用通配符扩展
组合使用技巧
将多个通配符组合,可以实现更精细的匹配。
# 删除所有以“temp”开头、中间包含数字、以“.tmp”结尾的临时文件
rm -rf temp*[0-9]*.tmp

小结
| 通配符 |
含义 |
使用场景 |
* |
任意多个字符 |
批量操作同类文件 |
? |
单个任意字符 |
精确控制文件名长度 |
[abc] |
a/b/c中任一个 |
有限范围选择 |
[!x] |
除了x |
反向排除 |
{a,b} |
a和b组合 |
生成多个文件名/路径 |
总结
熟练掌握 Linux 通配符,就如同为你的命令行装上了高效的“批量处理器”。从简单的 *.txt 到复杂的组合模式,这些符号能帮你应对各种文件管理场景。核心要点是:理解每个符号的匹配规则,并在执行关键操作前养成 ls [pattern] 先预览的好习惯。
希望这份指南能帮你更高效地管理文件。实践是掌握的最佳途径,下次遇到批量文件任务时,不妨尝试用通配符来解决。如果你想深入探讨更多命令行技巧或系统管理知识,欢迎在专业的云栈社区进行交流分享。