*通配符 `` 的核心作用**
代表匹配任意长度(0个或多个)的任意字符,常用于:
- 批量选择文件(如
.txt
,.log
) - 匹配部分文件名(如
file*.doc
) - 结合命令执行批量操作(如删除、复制)
基础用法与示例
匹配所有文件
ls * # 列出当前目录所有文件(不含隐藏文件) rm *.tmp # 删除所有后缀为.tmp的文件
匹配特定前缀/后缀
cp project_* /backup/ # 复制所有以"project_"开头的文件 grep "error" *.log # 在所有.log文件中搜索"error"关键词
匹配中间字符
ls report_*_2025.csv # 匹配如 report_summary_2025.csv
结合目录操作
mkdir /backup/{images,docs} # 创建多级目录 cp * /backup/images/ # 复制所有文件到指定目录
进阶技巧
与其他通配符组合
- :匹配单个字符
ls file_0?.txt # 匹配 file_01.txt, file_02.txt
[]
:匹配指定范围rm image_[1-5].jpg # 删除 image_1.jpg 到 image_5.jpg
递归匹配子目录文件
需启用 globstar
(Bash 4.0+):
shopt -s globstar # 启用递归 ls **/*.png # 匹配当前及子目录所有.png文件
避免匹配隐藏文件
默认不匹配以 开头的隐藏文件,需显式指定:
ls .* # 仅显示隐藏文件
关键注意事项
-
与正则表达式的区别
- 通配符 用于文件名扩展(Shell处理),正则表达式用于文本匹配(如
grep
)。 - 示例差异:
ls *.txt # 通配符:匹配文件 grep "a.*b" # 正则:匹配文本中"a开头b结尾"的字符串
- 通配符 用于文件名扩展(Shell处理),正则表达式用于文本匹配(如
-
操作前确认匹配结果
误用 可能导致灾难性操作(如误删系统文件)。务必先预览:echo rm *.log # 先打印将被删除的文件列表
-
处理特殊字符文件名
若文件名含空格或特殊符号(如file [1].txt
),用引号包裹:rm "file [1].txt" # 正确 rm file [1].txt # 错误!会删除file和[1].txt两个文件
- 核心价值: 通过模式匹配大幅提升命令行效率,尤其适合批量操作。
- 安全准则:
- 用
echo
或ls
预览匹配结果后再执行命令。 - 对特殊字符文件名使用引号。
- 用
- 适用场景:文件管理、日志分析、批量重命名等日常任务。
引用说明参考 Linux 官方文档(The Linux Command Line)、GNU Bash 手册及《Unix & Linux 系统管理实战》中的通配符规范,实践建议基于 Ubuntu/CentOS 等主流发行版验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8213.html