目录
通配符
在 Shell 中,通配符是用于查找文件名和目录名的,它是由 Shell 处理的,只会出现在命令的参数中
通配符介绍
* | 匹配任意长度的字符,可以是0个 |
? | 匹配任意单个字符,必须是1个 |
[] | 匹配指定的字符范围内的任意单个字符 |
[a-z,A-Z,0-9] | 匹配所有字母和数字,可以不加逗号 |
[a-z] | 匹配所有小写字母 |
[A-Z] | 匹配所有大写字母 |
[A-z] | 匹配所有大小写字母,等价于[a-z,A-Z] |
[:upper:] | 匹配所有大写字母,等价于[A-Z] |
[:lower:] | 匹配所有小写字母,等价于[a-z] |
[:alpha:] | 匹配所有字母,等价于[A-z] |
[:digit:] | 匹配所有数字,等价于[0-9] |
[:alnum:] | 匹配数字和大小写字母 |
[:space:] | 匹配水平和垂直空白字符 |
[^] | 匹配指定字符范围外的任意单个字符 |
[^0-9] | 匹配除数字以外,它等价于[^[ :digit: ]] |
通配符示例
示例1:
显示当前工作空目录下所有以 arr 开头的文件
[root@openEuler ~]# ls a*
ahead arr1.sh arr2.sh arr3.sh
示例2:
显示当前工作目录下所有在 arr 后有一个字符的文件
[root@openEuler ~]# ls
ahead arr1.sh arr2.sh arr3.sh arrbb.sh arrb.sh ips myfile arr.sh
[root@openEuler ~]# ls arr?.sh
arr1.sh arr2.sh arr3.sh arrb.sh
示例3:
显示当前工作目录下所有以 i 或 m 开头的文件
[root@openEuler ~]# ls
ahead arr1.sh arr2.sh arr3.sh arrbb.sh arrb.sh arr.sh ips myfile
[root@openEuler ~]# ls [im]*
ips myfile
示例4:
显示当前工作目录下所有以字母开头的文件
[root@openEuler ~]# touch {1..5}
[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh i m
2 4 ahead arr2.sh arrbb.sh arr.sh ips myfile
[root@openEuler ~]# touch File{1,2}
[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [a-zA-Z]*
ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
arr1.sh arr3.sh arrb.sh File1 i m
[root@openEuler ~]# ls [[:alpha:]]*
ahead arr1.sh arr2.sh arr3.sh arrbb.sh arrb.sh arr.sh
[root@openEuler ~]# ls [A-z]*
ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
arr1.sh arr3.sh arrb.sh File1 i m
示例5:
显示所有以数字开头的文件
[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [0-9]*
1 2 3 4 5
[root@openEuler ~]# ls [[:digit:]]*
1 2 3 4 5
示例6:
显示所有数字和字母开头的文件
[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [a-zA-Z0-9]*
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [A-z0-9]*
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [[:alnum:]]*
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
正则表达式
正则表达式是通过一些特殊字符的排列,用于查找、替换、删除一行或者多行字符串。它的操作是针对于文件的内容,则前面的通配符是针对于文件和目录名的操作
以 * 为示例来说明通配符和正则表达式的区别:
如果 * 是用于查找文件名或目录名时 | 表示可以匹配0到多个任意字符 |
如果 * 用于查找文件的内容 | 表示重复匹配前一个字符0到多次 |
在 Shell 中,正则表达式分为:
基本正则表达式 |
扩展正则表达式 |
grep命令
grep命令是