linux 全局搜文件内容,Linux下完美使用find+grep实现全局代码搜索

首先,举个最简单的例子,在阅读代码过程中我们经常需要查看某个函数的定义,但是一般开源项目代码规模都相当庞大,此时你就可以如下使用find+grep轻松查找到该函数的定义,譬如,我想在php源码中搜索is_array方法的定义,如下:

[root@AY140321223706700af3Z standard]#find . -name '*.c' -exec grep -Hna 'is_array' {} \;./basic_functions.c:2540:ZEND_BEGIN_ARG_INFO(arginfo_is_array, 0)

./basic_functions.c:3049:PHP_FE(is_array,arginfo_is_array)

./type.c:283:/* {{{ proto bool is_array(mixed var)

./type.c:285:PHP_FUNCTION(is_array)

这里需要注意两点: 1. find使用-exec时“;”是必备参数,如下两种方法都会导致“find: missing argument to `-exec'”,其中第一个命令报错是因为确实缺少“;”,而第二个命令报错是因为在shell中执行语句时“;”被认为是结束符,而不是-exec的参数,故使用时必须对其进行转义。

[root@AY140321223706700af3Z standard]# find . -name '*.c' -exec grep -Hna 'is_array' {}find: missing argument to `-exec'[root@AY140321223706700af3Z standard]# find . -name '*.c' -exec grep -Hna 'is_array' {} ;find: missing argument to `-exec'

[root@AY140321223706700af3Z standard]# find --help

actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print

-fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit-exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;-execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

2. 如上例,笔者在使用grep时添加了-Hna,其分别输出文件路径,行号,及相应的文本内容:

[root@AY140321223706700af3Z standard]# grep --help

-n, --line-numberprint line number with output lines--line-buffered flush output on every line

-H, --with-filenameprint the filename for each match-a, --textequivalent to --binary-files=text

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值