grep命令,查找含有某字符的文件
在某个目录中查找一个字符串,例如 "王思聪" ,我们可以这样: grep -rn 王思聪 * 解释如下: * : 表示从当前目录中查找所有的文件,也可以是特定的文件名,例如 abc.log -r 是递归查找 -n 是显示行号 -R 查找所有文件包含子目录 -i 忽略大小写 下面是其他一些命令参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写 例如 grep -i ErrorString abc.log 表示:不区分大小写的搜索出abc.log这个文件中含有 "ErrorString" 这个字符串的数据行
grep -l pattern files :只列出匹配的文件名 例如 grep -l 乔布斯 * 表示:列出所有含有 “乔布斯” 这个字符串的文件名
grep -L pattern files :列出不匹配的文件名 例如 grep -L 马云 abc.log* 表示:列出所有不含有“马云”这个字符串的文件名(并且文件名符合 abc.log* 匹配)
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’) 例如 grep -w 马云 abc.log 表示:列出所有含有“ 马云 ”这个字符串的文件行,注意 “马云”这个字符串前后都要有空格 grep -C number pattern files :匹配的上下文分别显示[number]行 例如 grep -C 5 ErrorString abc.log 表示:搜索出abc.log这个文件中含有 "ErrorString" 这个字符串的数据行,并且将含有这个字符串的前后5行的数据一起显示出来 grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行 例如 grep 马云|马化腾 abc.log 表示:搜索出abc.log这个文件中含有 “马云”或者“马化腾” 的数据行 grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行 例如 grep 马云 abc.log | grep 马化腾 表示:搜索出abc.log这个文件中既含有 “马云” 又含有 “马化腾” 的数据行 一些特殊符号: < > 分别标注搜索词的开始与结尾。 例如: grep 扎克伯格 * 匹配 ‘扎克伯格吃饭了’、‘扎克伯格和马云’、‘帅哥扎克伯格’等。 grep '<库克' * 匹配‘库克好男人’和‘库克船长’,但不是‘乔布斯的继承人库克’。 grep '<man>' 匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。 '^': 匹配的字符串在行首。 '$': 匹配的字符串在行尾。 |