Linux 文件通配符规则
星号 *
- 匹配任意长度的文件名字符串(包括空字符串)
- 点字符(
.
),当它作为文件名或路径名分量的第一个字符时,必须显式匹配 - 斜线(
/
)也必须显式匹配 - 例:
*file
匹配file
,makefile
,不匹配.profile
文件;try*c
匹配try1.c
,try.c
,try.basic
。
问号 ?
匹配任一单字符
方括号 [ ]
匹配括号内任一字符,也可以用减号指定一个范围
例: [A-Z]*
,*.[ch]
,[Mm]akefile
波浪线 ~
(Bash特有的)~
当前用户的主目录(home)~kuan
用户kuan的主目录(home)~root
用户root的主目录(home)
点文件.与点点文件..
当前目录与上级目录
把.
文件解释为当前目录,不是通配符处理程序完成的,来源于目录的存储结构
注意
- 文件名通配符规则与正则表达式的规则不同,应用场合不同
- 不同种类shell通配符规则会略有些差别
- Windows中
*.*
匹配所有文件,Linux中*.*
要求文件名中必须含有圆点否则不匹配,如:*.*
与makefile
不匹配 - 可以使用类似
*/*.[ch]
通配符,*/*/*.conf
- 文件通配符适用所有命令