litterstrong的个人空间 https://blog.eetop.cn/319186 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

【转】grep如何忽略.svn目录,以及如何忽略多个目录

已有 5049 次阅读| 2013-11-21 15:04 |个人分类:Linux

grep如何忽略.svn目录,以及如何忽略多个目录

grep -r 'function_name' *

(*表示当前目录下所有文件,-r表示递归查找,使用的模式较为简单,仅作参考)由于现在的很多项目都使用subversion作为版本管理工具,因此每个源码目录下都会有一个.svn 目录,其中包含了很多源码信息。不出意外,你很快会得到满屏幕的打印信息,但是其中大部分的信息都来自于 .svn 目录下的文件。有如下两种选择可以去除来自 .svn 目录的结果信息:

1.使用管道进行双层“过滤”,其中第二次grep使用了-v选项,即逆向匹配,打印出不匹配的行grep -r 'function_name' * | grep -v '.svn'

2.或者更简单一些,直接使用--exclude-dir选项,即指定排除目录,注意svn前的 \.grep -r --exclude-dir=\.svn 'function_name' * 的确,通过简单的选项设置,我们达到了过滤.svn目录的功能,但是每次都要输入 --exclude-dir=\.svn 的选项,似乎太麻烦了一点,幸运的是linux下灵活的配置文件可以解决这一切:打开 ~/.bashrc (这是bash的当前用户配置文件),在文件的最上方添加这样一条:export GREP_OPTIONS="--exclude-dir=\.svn" 


(注意 = 的前后不能有空格,不然在载入该配置文件时会提示错误)保存并关闭,同时在命令行键入如下命令:source ~/.bashrc (让bash重新读取脚本)当然,你也可以简单地关闭shell并重新打开一个shell窗口这样当你使用grep时,bash都会自动帮你附加--exclude选项,从而节省不少输入的时间:)

 

 

注意:老版本的grep不支持--exclude-dir选项,会报错误“grep: unrecognized option `--exclude-dir=.svn'”如果遇到这种情况,请更新软件包。

 

另外,如果需要支持多个目录,可用如下格式:  --exclude-dir=external --exclude-dir=build --exclude-dir=bin --exclude-dir=\.svn

相应地: export GREP_OPTIONS="--exclude-dir=external --exclude-dir=build --exclude-dir=bin --exclude-dir=\.svn"


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 8

    粉丝
  • 6

    好友
  • 8

    获赞
  • 12

    评论
  • 2122

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 08:34 , Processed in 0.030190 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部