Linux-在指定文件类型中递归查找到目标字符串

举报
小工匠 发表于 2021/09/10 01:37:40 2021/09/10
【摘要】 命令 find . -iname '*.conf' | xargs grep "search string" -sl1 解析 . 当前目录 按文件名查找: -name: 查找时文件名大...

命令

find .  -iname '*.conf' | xargs grep "search string" -sl
  
 
  • 1

解析

. 当前目录


按文件名查找:
-name: 查找时文件名大小写敏感。
-iname: 查找时文件名大小写不敏感


‘*.conf’
文件类型。比如这里查询的是.conf类型的文件,要查找 xml结尾的 *.xml等等…..


xargs命令:

该命令的主要功能是从输入中构建和执行shell命令

在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。
但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。
这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。


grep 后面的参数解析:

-l使得grep只打印匹配的文件名,而不打印匹配的行。只显示包含匹配模板的行的文件名清单。

-l, –files-with-matches print only names of FILEs containing matches
-s, –no-messages suppress error messages


文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/52268032

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。