Linux 在多个文件中搜索关键字
摘要:使用grep或者rg在当前目录下所有文件中查找关键字。
在Linux操作系统下,搜索文件中的关键字可帮助用户快速找到所需的信息,满足快速排查问题的需求。在大型系统中,文件可能被保存在多个目录中并且命名也可能不同,所以,逐个文件搜索就不现实了。小编在《Linux grep查询关键词首次或者最近一次出现的地方》介绍了如何在同一个文件里搜索关键词,本篇文章将和各位一起学习如何在多个文件中搜索关键字。
使用grep命令查找文件中的关键字
如果要在整个目录中搜索关键字,我们可以使用以下命令:
grep 'keyword' *
它在当前目录下递归搜索所有文件。谨记,不要丢掉最后的星号,而且不可换成具体的目录。如果要忽略子目录和二进制文件,可以使用以下命令:
grep -r 'keyword' --exclude-dir={目录1,目录2} --exclude='*.ext'
它忽略指定目录和扩展名的文件。grep还可以在指定目录下递归所有文件搜索关键词,命令如下:
grep "keyword" /data/logs -R | tail -3
业务含义:遍历目录/data/logs下的所有文件,最多展示包含关键词keyword的三行记录。
使用rg命令查找文件中的关键字
ripgrep是一个比grep高效的关键词搜索工具,rg (ripgrep)支持使用正则表达式和Unicode搜索。在整个项目中查找的命令如下:
rg 'keyword' 目录
上述命令会递归搜索指定目录下的所有文件。服务器一般不支持rg命令,会出现如下提示:
bash: rg: command not found
这时候,请安装rg指令,或者更换为grep。如果需要排除指定文件,则语法糖如下:
rg 'keyword' --ignore-file=ext:文件后缀 --ignore-dir={目录1,目录2}
上述命令会忽略指定目录和扩展名的文件。
结束语
以上就是这篇文章的全部内容了,希望本文对道友的学习或者工作能带来一定的帮助,如有疑问请留言交流。Wiener在此祝各位生活愉快!工作顺利!
读后有收获,小礼物走一走,请作者喝咖啡。
Buy me a coffee. ☕Get red packets.
作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。