在使用Linux系统的过程中,许多时候都需要查找一个文件,如果只记住文件名的一部分,查找时就显得非常困难。这是可以考虑使用文件名通配符
单字符匹配元字符“?”
元字符“?”表示匹配文件名中任意一个字符,连续使用多个元字符“?”可以表示多个任意字符
1.使用a?表示以a开头且有两个字符的文件名
#ls -l a?
2.查看当前目录下由字母a和任意两个字符组成的文件名
#ls -l a??
3.查看当前目录下所有第3个字符是c的文件
#ls -l ??c*
######################################################
多字符匹配元字符“*”
元字符“*”表示匹配文件名中的任意字符串。匹配的字符串长度可以是零到一个字符,也可以是长度很长的多个字符组成的字符串
1.查看当前目录下以字母c结尾的所有文件列表
#ls -l *c
2.查看当前目录下以ee开头,并以c结尾的文件列表
#ls -l ee*c
从上诉例子可知,元字符“*”既可以匹配零个字符,也可以匹配多个字符
3.元字符“*”也可以与其他的元字符配合一起使用
查看当前目录中倒数第2个字符是c的所有文件
#ls -l *c?
4.在当前目录中查看第3个字符为字母c组成的所有文件
#ls -l ??c*
######################################################3
字符范围匹配符"[]"
范围匹配符号“[]”通常用于匹配一个字符范围,其表现形式可以是减号"-"表示的字母和数字的范围,也可以使几个字符的组合
1.如果范围匹配符中出现的是几个字符的组合,表示匹配其中的任何一个字符。
例如要在当前目录中查看以字母klsyz中的任意一个开头的所有文件
#ls -l [klsyz]*
2.使用多个通配符可以进行更加复杂的匹配查找。
例如要在当前目录中查看以字母a开头且倒数第2个字符为字母cde中任意一个的所有文件
#ls -l a*[cde]?
3.使用符号“-”可以匹配一个字母或数字范围。
例如要在当前目录下查看文件名中含有数字的所有文件
#ls -l *[0-9]*
上面的命令中[0-9]表示匹配0到9之间的任意数字
4.要查看当前目录下文件名由两个字符组成且第2个字符是字母的所有文件
[a-Z]表示所有小写字母、大写字母
#ls -l ?[a-Z]
[a-Z]表示所有字母,也可以使用[a-zA-Z]表示所有字母
#########################################################33
排除范围匹配符“[!]”
排除范围匹配符“[!]”表示不匹配符号内出现的字符组合或字母子范围。使用时感叹号“!”只能放置在要排除的字符串首
1.要查看当前目录下文件名只有两个字符并以数字开头且第2个字符不是数字的所有文件
#ls -l [0-9][!0-9]
2.要查看当前目录下文件名只有两个字符且两个字符都不是字母的所有文件
#ls -l [!a-Z][!a-Z]
在上面的命令中[!a-Z]表示排除小写字母a-z和大写字母A-Z,即排除所有字母