linux grep查找指定文件中包含某字符串的文件

直接上菜

需要查验生产环境,某文件夹下,模糊匹配 *202005*的文件,是否包含某字符串'image_',并输出文件名

#指令如下
grep -rl image_  *202005*

结果如下:
在这里插入图片描述

追根溯源,grep菜谱之强大

grep 简介

grep(Global Regular Expression Print)命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本。

grep指令簇包括grep、egrep和fgrep,可以通过-G、-E、-F命令行选项来使用grep,egrep和fgrep的功能。

  • grep可以通过-E、-F命令行选项来使用egrep和fgrep的功能。
  • egrep 是grep的扩展,支持更多的re元字符
  • fgrep包含fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义

grep 参数介绍

#可以通过grep --help可查看
 -r:搜索子目录
 -d:不搜索子目录
 -c:只输出匹配行的计数。
 -C:匹配的上下文分别显示[number]行
 -i:不区分大小写。
 -h:查询多文件时不显示文件名。
 -l:查询多文件时只输出包含匹配字符的文件名。
 -L:列出不匹配的文件名
 -w:只匹配整个单词,如 hello不匹配helloabc
 -n:显示匹配行及行号。
 -s:不显示不存在或无匹配文本的错误信息。
 -v:显示不包含匹配文本的所有行。
 --color=auto :找到的关键词部分加上颜色的显示
 

正则说明

  \:忽略原有含义,来表示正则含义。
  ^:匹配正则表达式的开始行。
  $: 匹配正则表达式的结束行。
  \<:从匹配正则表达 式的行开始。
  \>:到匹配正则表达式的行结束。
  [ ]:单个字符,如[A]即A符合要求 。
  [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
  .:所有的单个字符。
  *:所有字符,长度可以为0。

实例说明

  • grep -rl hello *202005* :在文件名 包含202005的文件中查找hello字符串,并返回该文件。(不加 -l参数会返回行内容)
  • grep -rl ‘hello’ a.txt b.txt c.txt:在a,b,c三个文件中查找hello,并返回该文件。
  • grep '[0-9]\{4\}' a.txt:查找包含4个及以上数字的 行返回。(注意:\表示启用正则含义,或者用 egrep '[0-9]{4}' a.txt
  • grep hello /usr/file/* | less 当匹配多个行,可以通过管道转到 less 上查看。
  • grep pattern1 a.txt| grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
  • grep pattern1 | pattern2 a.txt: 匹配正则pattern1 或pattern2 的行。
  • grep hello* :会匹配 ‘helloa’、’hellob’、’yhelloa’等。
  • grep ‘\<hello’ * :匹配’hello’和’helloa’,但不是’yhello’。
  • grep ‘\<hello\>’ 只匹配’hello’,而不是’yhello’或’helloa’等其他的字符串。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章