find和grep总是傻傻分不清,为了让自己不再犯傻,觉得有必要记录下两者的区别~
grep是查找匹配条件的行,输出匹配行或含有匹配内容的文件;find是搜索匹配条件的文件。因此,一般情况下,grep的作用域是同目录下的一个文件也可以是多个文件(不包括大神们自己编写脚本实现不同文件夹的grep搜索哈),而find作用域是目录。
find 目录路径 选项 [条件] [ -exec command ] {} \;
选项 | 作用 |
---|---|
-name | 指定搜索文件名称 |
-perm | 权限值 |
-type | 指定搜索文件的文件类型 |
-group gname | 搜索组名称为gname的文件 |
Linux之grep
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。不要问我为啥说的这么官方,因为我觉得这套比较高大上,哈哈~~
要求 | 命令 |
---|---|
在文件中搜索“match_pattern”,返回包含的文本行 | grep match_pattern file_1 [file_2 file_3 …] 或 grep “match_pattern” file_1 [file_2 file_3 …] |
统计文件或者文本中包含匹配字符串的行数 | grep -c “match_pattern” file_1 [file_2 file_3 …] |
输出包含匹配字符串的行数 | grep “match_pattern” -n file_name 或 cat file_1 [file_2 file_3 …] | grep “match_pattern” -n file_1 [file_2 file_3 …] |
在多个文件查找并输出包含匹配字符串的行数 | grep “match_pattern” -n file_1 [file_2 file_3 …] |
以字母letter开始 | grep “<letter” file_1 [file_2 file_3 …] |
以字母letter结尾 | grep “letter>” file_1 [file_2 file_3 …] |
查找字母 | grep “<letter>” file_1 [file_2 file_3 …] |
查找行首字母为letter | grep “^letter” file_1 [file_2 file_3 …] |
查找行首字母为letter | grep “letter$” file_1 [file_2 file_3 …] |