grep 如何忽略 .svn 目录

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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值