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’等其他的字符串。
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用grep命令来查找包含指定字符串文件。 具体命令如下: grep "指定字符串" 文件路径 例如,要在/home/user目录下查找包含字符串"hello world"的文件,可以使用以下命令: grep "hello world" /home/user/* 该命令会在/home/user目录下的所有文件查找包含"hello world"的文件,并将结果输出到终端。如果要将结果保存到文件,可以使用重定向符号">",例如: grep "hello world" /home/user/* > result.txt 该命令会将结果保存到result.txt文件。 ### 回答2: Linux系统查找包含指定字符串文件是一项非常基础和常用的操作。这里将介绍三种不同的方法,分别是使用grep命令、find命令和ack命令。 1. 使用grep命令 grep命令是一种文本搜索工具,可以用于在文件查找包含指定字符串。如果我们想要在某个目录下查找包含指定字符串文件,可以先使用cd命令进入该目录,然后运以下命令: grep -rn "指定字符串" . 其,-r参数表示递归查找,-n参数表示显示行号,"."表示当前目录,指定字符串用引号括起来。此命令将显示所有包含指定字符串文件名、行号和文本内容。 2. 使用find命令 find命令是一种查找文件的工具,可以在指定目录查找包含指定字符串文件。还是以某个目录为例,如果我们想要查找所有包含指定字符串文件,可以运以下命令: find . -type f -exec grep -l "指定字符串" {} \; 其,"."表示当前目录,-type f表示查找文件而非目录,-exec表示执后面的命令,grep -l表示只显示包含指定字符串文件名,"{} \;"表示将文件名传递给grep命令。运此命令后,将在控制台显示出所有包含指定字符串文件名。 3. 使用ack命令 ack命令是一款类似于grep的文本搜索工具,可以自动忽略.version-control、.svn、.git等版本控制目录,不需要使用正则表达式即可搜索指定字符串。如果我们想要在某个目录下查找所有包含指定字符串文件,可以运以下命令: ack "指定字符串" . 其,"."表示当前目录,指定字符串用引号括起来。此命令将显示所有包含指定字符串文件名、行号和文本内容。 以上三种方法都是非常方便和有效的查找包含指定字符串文件的方法,根据不同的需求和场合可以选择不同的命令来使用。 ### 回答3: 在Linux系统,我们可以使用命令工具来查找包含指定字符串文件。下面是具体的步骤: 1. 打开终端并登录到Linux系统。 2. 进入要查找的目录。 3. 使用grep命令来查找包含指定字符串文件grep命令的用法如下: grep "要查找字符串" 文件名 例如:要查找包含字符串“hello”的文件,可以输入以下命令: grep "hello" 文件名 如果要查找当前目录及其子目录包含指定字符串的所有文件,可以使用以下命令: grep -r "要查找字符串" 目录名 例如:要查找当前目录及其子目录包含字符串“hello”的所有文件,可以输入以下命令: grep -r "hello" . 4. 如果要忽略大小写,可以使用以下命令: grep -ir "要查找字符串" 目录名 例如:要查找当前目录及其子目录包含字符串“hello”的所有文件(忽略大小写),可以输入以下命令: grep -ir "hello" . 以上就是在Linux系统查找包含指定字符串文件的方法,通过这个方法我们可以快速到需要的文件。同时还有其他命令可以实现类似的功能,如find、ack等,读者可以根据具体需要选择不同的命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ernest ZZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值