【原创】grep如何忽略过滤.svn目录以及如何忽略多个目录

blogdaren 2015-03-20 抢沙发 2649人次

问题背景:

由于现在的很多项目都使用subversion作为版本管理工具,因此每个源码目录下都会有一个.svn 目录,其中包含了很多源码信息。但是其中不少文件都来自于 .svn 目录,所以在我们grep查找源码文件的时候需要过滤 .svn 目录。

解决方法:

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

# grep -lr 'keyword'  ./* | grep -v '.svn'

2. 直接使用--exclude-dir选项,即指定排除目录,注意 .svn 前的反斜杠 \

# grep -lr --exclude-dir=\.svn  'keyword' ./* 

的确,通过简单的选项设置,我们达到了过滤.svn目录的功能,但是每次都要输入 --exclude-dir=\.svn 的选项,似乎太麻烦了一点,幸运的是linux下灵活的配置文件可以解决这一切:打开 ~/.bashrc (这是bash的当前用户配置文件),在文件的末尾添加这样一条命令:export GREP_OPTIONS="--exclude-dir=\.svn", 然后 source ~/.bashrc 立即生效

3. 另外如果需要支持多个目录,可用如下格式: 

# grep --exclude-dir=目录1 --exclude-dir=目录2 --exclude-dir=目录3 

相应地:

# export GREP_OPTIONS="--exclude-dir=目录1 --exclude-dir=目录2 --exclude-dir=目录3"

注意事项:

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

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】grep如何忽略过滤.svn目录以及如何忽略多个目录

发表评论:

您的昵称:
电子邮件:
个人主页:

Free Web Hosting