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
等,以实现批量文件操作。