在 Linux 系统中,通配符(Wildcards) 主要用于文件名匹配,特别是在 ls、cp、rm、mv 等命令中非常常用,它们由 Shell(如 Bash)在命令执行前进行解析,而不是由程序本身处理。
以下是 Linux 中最常用的通配符及其用法详解:
星号
含义:匹配零个或多个任意字符。
-
用法示例:
ls .txt
列出当前目录下所有以
.txt结尾的文件。ls file
列出所有以
file开头的文件(如file1,file_backup,file.txt等)。ls
列出当前目录下的所有文件和目录。
问号
含义:匹配恰好一个任意字符。
- 用法示例:
ls file?.txt
匹配
file1.txt、fileA.txt,但不匹配file10.txt或file.txt(因为 只代表一个字符)。
方括号 []
含义:匹配方括号内任意一个
字符。
-
用法示例:
ls file[0-9].txt
匹配
file0.txt到file9.txt。ls file[abc].txt
匹配
filea.txt、fileb.txt或filec.txt。ls file[!0-9].txt
匹配非数字结尾的文件(如
fileA.txt), 表示取反。
花括号
含义:匹配大括号内列出的任意一个字符串(支持组合扩展)。
-
用法示例:
ls file{1,2,3}.txt等价于
ls file1.txt file2.txt file3.txt。touch {a,b,c}_{1,2}.txt生成 6 个文件:
a_1.txt,a_2.txt,b_1.txt,b_2.txt,c_1.txt,c_2.txt。
波浪号
含义:代表用户的主目录(Home Directory)。
-
用法示例:
ls ~/Documents
列出当前用户主目录下的
Documents文件夹内容。ls ~username/
列出指定用户(如
username)的主目录内容。
点号
含义:
-
单个 代表当前目录。
-
两个 代表上一级目录。
-
以 开头的文件是隐藏文件,在默认
ls命令中不会显示,需加-a参数。 -
用法示例:
ls -a .
列出所有隐藏文件(如
.bashrc,.ssh等)。
⚠️ 重要注意事项
-
通配符由 Shell 解析
通配符是在命令执行之前由 Shell(如 Bash)展开为具体的文件名列表,如果文件不存在,Shell 通常会报错(除非设置了nullglob或failglob选项)。 -
引号会阻止通配符展开
如果你用单引号 或双引号 包裹通配符,Shell 会将其视为普通字符,而不是通配符。echo ".txt" # 输出: .txt (而不是列出所有 .txt 文件)
-
路径中的通配符
通配符也可以用于路径匹配:ls /var/log/.log
-
安全提示
在使用
rm或mv等危险命令时,务必先使用echo或ls预览匹配结果,避免误删:# 先预览 rm .log # 改为 echo .log | xargs rm # 或更安全的做法 rm -i .log
总结表
| 通配符 | 含义 | 示例 | 匹配结果 |
|---|---|---|---|
| 零个或多个任意字符 | .txt |
a.txt, b.txt, test.txt |
|
| 恰好一个任意字符 | file?.txt |
file1.txt, fileA.txt |
|
[abc] |
匹配 a、b 或 c | file[abc].txt |
filea.txt, fileb.txt, filec.txt |
[0-9] |
匹配 0 到 9 的数字 | file[0-9].txt |
file0.txt ~ file9.txt |
{a,b} |
匹配 a 或 b | file{1,2}.txt |
file1.txt, file2.txt |
| 用户主目录 | /home/username |
掌握这些通配符可以极大提高你在 Linux 终端中的操作效率!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/478291.html



