Linux 文件通配符规则

星号 *

  • 匹配任意长度的文件名字符串(包括空字符串)
  • 点字符(.),当它作为文件名或路径名分量的第一个字符时,必须显式匹配
  • 斜线(/)也必须显式匹配
  • 例:*file匹配filemakefile,不匹配.profile文件;try*c 匹配try1.ctry.ctry.basic

问号 ?

匹配任一单字符

方括号 [ ]

匹配括号内任一字符,也可以用减号指定一个范围

例: [A-Z]**.[ch][Mm]akefile

波浪线 ~

(Bash特有的)
~ 当前用户的主目录(home)
~kuan 用户kuan的主目录(home)
~root 用户root的主目录(home)

点文件.与点点文件..

当前目录与上级目录
.文件解释为当前目录,不是通配符处理程序完成的,来源于目录的存储结构

注意

  • 文件名通配符规则与正则表达式的规则不同,应用场合不同
  • 不同种类shell通配符规则会略有些差别
  • Windows中*.*匹配所有文件,Linux中*.*要求文件名中必须含有圆点否则不匹配,如:*.*makefile不匹配
  • 可以使用类似*/*.[ch]通配符, */*/*.conf
  • 文件通配符适用所有命令