通配符(Wildcard)是一种用于模糊匹配文本的符号,常见于文件系统中的路径匹配、简单的文本搜索等场景。以下是一些常见的通配符及其用法:
1. *(星号)
含义:匹配任意数量的字符(包括零个字符)。
示例:
file*:匹配以 file 开头的所有文件名,如 file.txt、file123、file。
*.txt:匹配所有扩展名为 .txt 的文件,如 document.txt、readme.txt。
2. ?(问号)
含义:匹配任意单个字符。
示例:
file?.txt:匹配 file1.txt、fileA.txt,但不匹配 file12.txt(因为问号只匹配一个字符)。
?.txt:匹配任意单个字符开头的 .txt 文件,如 a.txt、1.txt。
3. [abc](字符集)
含义:匹配方括号内的任意一个字符。
示例:
file[123].txt:匹配 file1.txt、file2.txt、file3.txt。
file[a-zA-Z].txt:匹配 filea.txt、fileA.txt,但不匹配 file1.txt(因为方括号内只定义了字母)。
4. [!abc] 或 [^abc](字符集的否定)
含义:匹配不在方括号内的任意一个字符。
示例:
file[!123].txt 或 file[^123].txt:匹配 filea.txt、file4.txt,但不匹配 file1.txt、file2.txt。
[!a-zA-Z].txt:匹配以非字母开头的 .txt 文件,如 1.txt、@.txt。
5. [a-z] 或 [A-Z] 或 [0-9](范围匹配)
含义:匹配指定范围内的任意一个字符。
示例:
file[0-9].txt:匹配 file1.txt、file2.txt,直到 file9.txt。
file[a-z].txt:匹配 filea.txt、fileb.txt,直到 filez.txt。
file[A-Z].txt:匹配以大写字母开头的文件名,如 fileA.txt、fileZ.txt。
6. **(双星号)
含义:在某些支持递归匹配的场景中,** 用于匹配任意数量的目录和子目录。
示例:
**/*.txt:匹配当前目录及其所有子目录下的 .txt 文件。
folder/**:匹配 folder 目录及其所有子目录下的所有文件和文件夹。
7. 特殊场景:文件系统中的通配符
在文件系统中,通配符通常用于命令行工具,如:
Windows 命令提示符:
dir *.txt:列出当前目录下所有 .txt 文件。
del file*.tmp:删除以 file 开头的所有 .tmp 文件。
Linux/Unix 命令行:
ls *.txt:列出当前目录下所有 .txt 文件。
rm -rf folder/*:删除 folder 目录下的所有文件和子目录。
总结
通配符是一种简单而强大的工具,用于快速匹配和筛选文本或文件名。常见的通配符包括:
*:匹配任意数量的字符。
?:匹配任意单个字符。
[abc]:匹配方括号内的任意一个字符。
[!abc] 或 [^abc]:匹配不在方括号内的任意一个字符。
[a-z]、[A-Z]、[0-9]:匹配指定范围内的字符。
**:递归匹配所有子目录(在支持的场景中)。
这些通配符广泛应用于文件系统操作和简单的文本搜索场景。