grep搜索特定文件

xargs

搜索当前目录中的C文件,查找main关键字。

find . -name "*.c" | xargs grep main

需要区分开xargs和单纯使用管道的区别,单独使用管道|,是把上一个命令的标准输出作为后一个命令的标准输入;而使用xargs则会把上一个命令的标准输出作为后一个命令的标准命令。

比如上面的命令如果不加xargs来传参,那么搜索的含义将发生变化:

find .  -name "*.c" | grep main

这条命令表示的是搜索当前目录中的所有c文件,并且查找文件名中包含有main关键字的文件

默认情况下,xargs会把前面命令的输出全部作为后一条命令的参数执行一次。如果说我们想要把第一条命令的输出依次传递给后条命令并执行多次,那么需要使用如下方式,比如:

ls | xargs -I {} echo test {}

该命令会输出如下:

test bin
test boot
test data
test dev
test etc
test home
test lib
test lib64

而如果不加-I选项,结果如下:

test bin boot data dev etc home lib lib64

find -exec命令

find . -name "*.c" -exec grep main -H  {} \;

和xargs一样,find的-exec命令也可以实现指定文件的命令参数传递,执行时的{}将会被替换为find的搜索结果。它和xargs的区别在于xargs会把find的结果以空格为间隔的方式传递到命令中。而find -exec以{} \结尾,则会把find的每行结果作为后面的命令参数执行一次。

如果find -exec后面是以{} +结尾,那么此时的执行方式是与xargs的默认行为是一致了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值