常用通配符

通配符(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]:匹配指定范围内的字符。

**:递归匹配所有子目录(在支持的场景中)。

这些通配符广泛应用于文件系统操作和简单的文本搜索场景。