grep命令
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
find命令
而linux下的find
功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。
语法:find 起始目录 寻找条件 操作
说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。
区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
举个栗子grep
1、查找指定进程 命令:ps -ef|grep java 2、查找指定进程个数 命令:ps -ef|grep -c java 或ps -ef|grep java -c # 显示的是进程数
一些不知道常用不常用,反正目前没用到,先mark~
1、$ ls -l | grep '^a' 通过管道过滤ls -l输出的内容,只显示以a开头的行。 2、$ grep 'test' d* 显示所有以d开头的文件中包含test的行。 3、$ grep 'test' aa bb cc 显示在aa,bb,cc文件中匹配test的行。 4、$ grep '[a-z]\{5\}' aa 显示所有包含每个字符串有5个连续小写字符的字符串的行。 5、$ grep 'w\(es\)t.*\1' aa 如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用"\"号进行转义,直接写成'w(es)t.*\1'就可以了。 6、cat test.txt | grep -f test2.txt
7、cat test.txt |grep -E "ed|at" 显示包含ed或者at字符的内容行 8、grep '[a-z]\{7\}' *.txt 显示当前目录下面以.txt 结尾的文件中的所有包含每个字符串至少有7个连续小写字符的字符串的行
grep中转义字符需要注意
如: grep "$a" file #引用变量a,查找变量a的值 grep '$a' file #查找“$a”字符串 grep '\\' file #查找‘\’字符 grep "\\\\" file # 由于是双引号,shell先把\\转义,就成了\,grep接收到的只有\\\,\是特殊字符 ,后面应该跟需要转义的字符,也就是\\,所以如果直接使用"//"那么就出现了错误。
其他需要到的详细栗子在这里:https://www.cnblogs.com/kongzhongqijing/articles/4462793.html
参考博文:https://www.cnblogs.com/lpp900830/p/6053592.html