以下内容转载自 https://www.phpernote.com/linux/1312.html
linux系统中,如果你想在当前目录下查找所有包含"phpernote"字符串的文件,可以这样输入命令:
grep -r -n "phpernote" *
* : 表示当前目录所有文件,也可以是某个文件名,可省略
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写,默认情况区分大小写
-l 只列出匹配的文件名
-L 列出不匹配的文件名
-w 只匹配整个单词,而不是字符串的一部分(如匹配 'magic',而不是 'magical')
-C number 匹配的上下文分别显示[number]行
(1)当然还有一些更有意思的查找方法,例如:
grep "phpernote" | "php" *
查找当前目录下包含了phpernote字符或者包含了php字符的文件
grep "phpernote" | grep "php" *
查找当前目录下既包含phpernote字符又包含php字符的文件
(2)这里还有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 'Batman'、'manic'、'man'等
grep '\
grep '\' 只匹配'man',而不是'Batman'或'manic'等其他的字符串。
'^':指匹配的字符串在行首
'$':指匹配的字符串在行尾
当然还可以通过xargs配合grep查找文件列表,例如:
find -type f -name '*.java'|xargs grep 'http'
1、或操作
grep -E '123|abc' filename // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename // 用egrep同样可以实现
awk '/123|abc/' filename // awk 的实现方式
2、与操作
grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。
3、其他操作
grep -i pattern files //不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files //只列出匹配的文件名,
grep -L pattern files //列出不匹配的文件名,
grep -w pattern files //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files //匹配的上下文分别显示[number]行,