- find命令和grep命令的区别
find搜索的是文件名,默认的使用的是通配符(通配符是完全匹配);find命令可以通过指定-regex参数将匹配模式转化为正则表达式,但是不建议如此使用
grep 搜索的是文件的内容,默认使用的是正则表达式(正则表达式是模糊匹配)
- 通配符:通配符用来匹配文件名,完全匹配
通配符 | 作用 |
? | 匹配一个任意字符 |
* | 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c |
[-] | 匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符 |
- 正则表达式 :用来匹配字符创 ,包含匹配;
标准正则:
正 则 符 |
作 用 |
* |
匹配前一个字符重复 0 次,或任意多次 |
[] |
匹配中括号中任意一个字符。例如,[abc]代表一定匹配一个字符,或者是 a,或者是 b,或者是 c |
[-] |
匹配中括号中任意一个字符,-代表一个范围。例如,[a-z]代表匹配一个小写字母 |
[^] |
逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9]代表匹配一个不是数字的字符 |
^ |
匹配行首 |
$ |
匹配行尾 |
\ |
转义符。用于取消讲特殊符号的含义取消。 表示其前面的字符恰好出现 n 次。例如:[0-9]\{4\} 匹配 4 位数字, |
\{n\} | 前面的字符出现n次 |
\{n,\} | 前面的字符至少出现n次 |
\{n,m\} | 前面的字符出现n-m次 |
- 扩展正则 linux中的grep默认不支持如下正则符号,如果要使用如下符号需要使用egrep命令或 grep -E参数。
扩展元字符 |
作 用 |
+ |
前一个字符匹配 1 次或任意多次。 如“go+gle”会匹配“gogle”、“google”或“gooogle”,当然如 果“o”有更多个,也能匹配。 |
? |
前一个字符匹配 0 次或 1 次。 |
| |
匹配两个或多个分支选择。 如“was|his”会匹配既包含“was”的行,也匹配包含“his”的行。 |
() |
匹配其整体为一个字符,即模式单元。可以理解为由多个单个字符组 成的大字符。 如“(dog)+”会匹配“dog”、“dogdog”、“dogdogdog”等,因为 被()包含的字符会当成一个整体。但“hello (world|earth)” 会匹配“hello world”及“hello earth”。 |