linux 搜索文件内容 包含某个单词,Linux中grep查找含有某字符串的所有文件

在项目中,经常会遇到原始表名等已更换需要在脚本中批量替换的情况。但是这些涉及到哪些表,一个个的查找有些麻烦还可能会漏掉;直接在Linux上替换掉可能不能进行很好的版本同步;所以,可以考虑通过find与grep命令组合先查找出需要修改的脚本再进行统一处理。

--递归查找目录下含有该字符串的所有文件

grep -rn "data_chushou_pay_info" /home/hadoop/nisj/automationDemand/

--查找当前目录下后缀名过滤的文件

grep -Rn "data_chushou_pay_info" *.py

--当前目录及设定子目录下的符合条件的文件

grep -Rn "data_chushou_pay_info" /home/hadoop/nisj/automationDemand/ *.py

--结合find命令过滤目录及文件名后缀

find /home/hadoop/nisj/automationDemand/ -type f -name '*.py'|xargs grep -n 'data_chushou_pay_info'

最终的:【find /home/hadoop/nisj/automationDemand/ -type f -name '*.py'|xargs grep -n 'data_chushou_pay_info'】比较满足查询的要求。

Grep选项:

* : 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n 是显示行号

-R 查找所有文件包含子目录

-i 忽略大小写

有意思的命令行参数:

grep -i pattern files :不区分大小写地搜索。默认情况区分大小写

grep -l pattern files :只列出匹配的文件名,不列出路径

grep -L pattern files :列出不匹配的文件名

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)

grep -C number pattern files :匹配的上下文分别显示[number]行

grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行

grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行

有些用于搜索的特殊符号:

\< 和 \> 分别标注单词的开始与结尾。

例如:

grep man * 会匹配 ‘Batman’、‘manic’、‘man’等

grep '\

grep '\' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。

'^':指匹配的字符串在行首

'$':指匹配的字符串在行尾

---------------------

作者:BabyFish13

来源:CSDN

原文:https://blog.csdn.net/BabyFish13/article/details/79709028

版权声明:本文为博主原创文章,转载请附上博文链接!

eac76ce043de08f05460f8dd4865d263.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值