Linux下查找某文件夹下某类文件的内容

今天有个需求:需要查找在某个工程下面的所有js文件和vm文件中是否包含某个特定的关键字$a。

 

自己最直观的想法,使用find实现。

 

find . -name "*.js" -or -name "*.vm" | xargs grep "\b$a\b"

这里很容易在-or参数后面忘记再写一次-name参数,我开始就是忘记了,导致语法就有问题,linux不认!

 

后来请教一位同事时,人家给出了直接grep的解法,相当不错,记录一下:

grep "\b$a\b" --include=\*.{js,vm} -r .

这里,--include参数表明需要grep哪类文件,-r表示递归搜索特定的文件夹,千万别忘记最后的那个“点”,用于表明在当前文件夹下搜索。  

 

另外,还有个需求,要做多少关键字被匹配到的记录。其实本质上是需要个shell下的计数器。

不过这个小语法有被我写错了,必须记录一下了,汗。

因为使用的是bash,所以直接使用((i++))做自增最方便了。不过这里的注意,自增变量i在(())双括号中是不用使用变量引用的$符号的,这个被我忽略的地方,也就错在这里了。。。

所以正确的写法类似于下面这样的:

i=0
#in for loop under some condition
((i++))
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值