1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| [123] 注意这里表示单个数字1或2或3,而非123 [1-5] 匹配1-5 [135] 匹配1,3,5 8[0-9] 匹配数字80-89 1[0-9][0-9] 匹配数字100-199 [0-9][0-9] 匹配所有两位数 [0-9][0-9][0-9] 匹配所有三位数 [^123] 不包括1,2,3之外的所有单个字符 [0-9] 匹配数字0-9 [^0-9] 非数字,即匹配所有大小写字母和特殊字符 [a-Z] 匹配所有大小写字母,排序为a,A,b,B,c,C...z,Z [0-Z] 零到大写Z,即匹配所有数字和大小写字母,顺序为0-9,a,A,b,B,c,C...y,Y,z,Z [^0-Z] 匹配特殊字符 [a-z] 注意这里并非匹配的是a-z,而是除了大写Z之外的字母 [A-Z] 注意这里并非匹配的是A-Z,而是除了小写a之外的字母
[a-c] 匹配a,A,b,B,c [a-C] 匹配a,A,b,B,c,C [A-C] 匹配A,b,B,c,C [ACdf] 匹配A,C,d,f [^a-d] 匹配除了a,A,b,B,c,C,d [wang] 匹配列表中的任意一个字符w,a,n,g [^wang] 匹配列表中的所有字符以外的字符 [5-9a-CZ] 数字字母支持混合,匹配5-9,a,A,b,B,c,C,Z [[:lower:]] 匹配小写字母a,b,c,d... [[:upper:]] 匹配大写字母A,B,C,D...
字符位说明 [0-9]或[a-Z]或[0-Z] 表示匹配一个字符位,如0,1,9,a,A,z,Z [a-Z][0-9] 表示匹配两个字符位,且首位为字母,第二位为数字,如a1,b2,c9,Z8,K6 [0-9]?? 表示匹配三个字符位,且首位为数字,如010,2ai,98h,66Z [0-9]* 表示匹配一个或多个字符位,且首位为数字,如1,12,800,10ab,39KEaL [^0-9]* 表示匹配一个或多个字符位,且首位不是数字,如a,ab,a102,NCo3la
通配符匹配示例 touch {A..z} 创建大小写字母和5个特殊字符 "`_^][",注意这里的大括号{A..z}并不是通配符 touch {0..9} f{A..z} f{0..9} f汉 f汉字 f.log touch f21 f23 f24 f234 f32 f35 f63 f-1 f-12 fa_b f4422 faaa4d35 faaa4d3rr5 ls f[1,2,3] 显示f1,f2,f3 ls f[123] 显示f1,f2,f3 ls f[23] 显示f2,f3 ls f[2323] 显示f2,f3 ls f[2,3,23] 显示f2,f3 ls f[23]* 显示f2 f21 f23 f234 f24 f3 f32 f35 ls f[23]? 显示f21 f23 f24 f32 f35,等同于f2?和f3? ls f*[23]? 显示f21 f23 f234 f24 f32 f35 f4422 faaa4d35,等同于f*2?和f*3? ls f*3* 显示f23 f234 f3 f32 f35 f63 faaa4d35 faaa4d3rr5 ls f*[123] 显示f1 f-1 f-12 f2 f21 f23 f3 f32 f4422 f63 ls f?[123] 显示f-1 f21 f23 f32 f63 ls [aBZ] 显示a B Z ls [^aBZ] 显示非a,B,Z之外的单个字符,包括数字和大小写字母,以及特殊符号,还有汉字 ls [^aBZ5-9] 显示非a,B,Z,5-9之外的单个字符 ls f? 可以匹配到f汉,说明一个汉字也属于一个字符 ls f???? 可以匹配到f.log,说明后缀也属于字符长度 ls *.* 匹配所有带有后缀名的文件,或者文件名中有.的文件 ls *-* 匹配所有文件名中带有-的文件 ls *_* 匹配下划线
touch /root/d1/-al 创建-al文件,注意-开头的文件增删改查都必须指定绝对路径,而且-文件无法用通配符匹配过滤,可匹配到的即自动认为是命令参数直接运行,危险! ls ??l 显示为执行后的结果,即匹配到-al后自动作为ls的参数执行,ls -al
有趣的实验-通过创建命令文件来删除文件 创建文件 mkdir ~/d1 cd ~/d1 touch {0..9} {A..z} 第一种删除 touch /root/d1/-rf 创建-rf这个文件 ls rm ??f a b c A B C 1 2 3 通配符??f可以匹配到-rf这个文件名,用来作为rm命令的参数 rm ??f [^0-9] 删除非数字字符 mv 9 999 rm ??? 自动删除999,即删除与-rf位数匹配(都是3位)的文件 rm ??? * 删除所有,但是无法删除-rf文件 rm -rf * 此命令同上,无法删除-rf文件,需添加绝对路径 rm ??? ~/d1/-rf 成功删除 第二种删除 touch rm\ \-rf\ \* 创建rm -rf *这个文件 ls rm* 匹配到rm -rf *这个文件,是否可以执行呢 ls [r]*[r]??? 也可以匹配到,怎么执行呢 ls rm*|/bin/bash 用管道交给bash执行即可,这时当前目录下所有文件均被删除
|