Linux中的通配符(wildcards)允许用户在命令行中处理文件名或路径名时,不必精确指定每个文件。以下是一些常见的Linux通配符用法:
*:匹配任意长度的任意字符。例如,*.txt 匹配所有以 .txt 结尾的文件。?:匹配任意单个字符。例如,ab?d 匹配 abd、abbd、abtd 等。[...]:匹配方括号内的任意一个字符。例如,[abc] 匹配 a、b 或 c。如果方括号内包含 -,则需要使用转义字符 \,如 [a-z] 匹配所有小写字母。{...}:匹配大括号内的任意一个字符串。例如,file{1,2} 匹配 file1 和 file2。~:表示用户的主目录。例如,~/documents 指向当前用户主目录下的 documents 文件夹。#:在shell脚本中表示注释。例如,#!/bin/bash 表示这是一个bash脚本。\:用于转义特殊字符。例如,\.txt 匹配 .txt(因为 . 在shell中具有特殊含义)。*.*:匹配任意长度的任意字符,包括点号。例如,*.txt 匹配所有以 .txt 结尾的文件,file.* 匹配 file.txt、file.doc 等。**:在GNU find命令中表示递归搜索。例如,find . -name "*.txt" -type f 查找当前目录及其子目录下所有以 .txt 结尾的文件。!?():在GNU find命令中表示不匹配括号内的模式。例如,find . -name "!(file).txt" 查找当前目录及其子目录下所有不以 file.txt 结尾的文件。这些通配符可以与各种Linux命令结合使用,如 ls、cp、mv、rm、find 等,以实现批量文件操作。