grep不查找隐藏文件夹的方法
2013-11-26 09:57
288 查看
转自:/article/1426092.html
默认的grep会搜索所有文件,包括隐藏文件夹下的文件。
例如,使用如下命令搜索MediaButton字符串,搜索结果包含隐藏文件夹下的文件。
grep -nr MediaButton *
如果是用svn管理的代码,每个文件夹下都有一个.svn的隐藏文件夹,包含对代码版本的控制信息,日积月累会越来越庞大。所有如果只是默认搜索的话,很多搜索结果都是svn目录下的,对我们来说,是没有价值的内容;而且还会耗费很多时间。
grep的--exclude-dir=参数就是为了排除某个目录的,即不包含等号后面的目录,所以我们可以利用此参数去掉.svn的隐藏目录。
--exclude-dir=参数的用法如下:
1. If you have GNU Grep, it should work like this:
例如:查找当前目录以及子目录下所有包含"MediaButton"字符串的代码并打印行号
grep -nr --exclude-dir=".svn" MediaButton *
// 其中的-n是显示在找到的文件中的行号(从1开始计数)
或者
grep -nr --exclude-dir=\.svn MediaButton *
--exclude-dir=后面要排除的目录用双引号括起来或者直接接目录名都可以,但是特殊字符必须用转义符表示,例如".svn"中的"."。
2.If happen to be on a Unix System without GNU Grep, try the following:
这种方式是使用管道进行双层“过滤”,其中第二次grep使用了-v选项,即逆向匹配,打印出不匹配的行
grep -nr "whatever you like" * | grep -v "\.svn/*"
3. 如果每次都输入--exclude-dir=参数,是不是很慢还容易出错,降低效率呢?
不过不用担心,我们可以把--exclude-dir=参数通过加入配置文件 ~/.bashrc (这是bash的当前用户配置文件) 的方法来简化操作,提高效率。
在~/.bashrc文件的末尾添加以下命令:
[plain] view
plaincopy
export GREP_OPTIONS="--exclude-dir=\.svn"
然后保存,执行source ~/.bashrc或者. ~/.bashrc,使修改起作用。
然后搜索时,执行以下命令即可:
grep -nr MediaButton *
这样默认就会加载GREP_OPTIONS选项,不搜索.svn目录。
需要注意的是,GREP_OPTIONS这个关键词不能修改为其他的,否则系统就不会认为是grep的一个选项参数了。
参考:
http://stackoverflow.com/questions/1491514/exclude-svn-directories-from-grep
http://hi.baidu.com/jasonlyy/item/6a9594e7438e97a1c00d755c
默认的grep会搜索所有文件,包括隐藏文件夹下的文件。
例如,使用如下命令搜索MediaButton字符串,搜索结果包含隐藏文件夹下的文件。
grep -nr MediaButton *
如果是用svn管理的代码,每个文件夹下都有一个.svn的隐藏文件夹,包含对代码版本的控制信息,日积月累会越来越庞大。所有如果只是默认搜索的话,很多搜索结果都是svn目录下的,对我们来说,是没有价值的内容;而且还会耗费很多时间。
grep的--exclude-dir=参数就是为了排除某个目录的,即不包含等号后面的目录,所以我们可以利用此参数去掉.svn的隐藏目录。
--exclude-dir=参数的用法如下:
1. If you have GNU Grep, it should work like this:
grep --exclude-dir=".svn"
例如:查找当前目录以及子目录下所有包含"MediaButton"字符串的代码并打印行号
grep -nr --exclude-dir=".svn" MediaButton *
// 其中的-n是显示在找到的文件中的行号(从1开始计数)
或者
grep -nr --exclude-dir=\.svn MediaButton *
--exclude-dir=后面要排除的目录用双引号括起来或者直接接目录名都可以,但是特殊字符必须用转义符表示,例如".svn"中的"."。
2.If happen to be on a Unix System without GNU Grep, try the following:
这种方式是使用管道进行双层“过滤”,其中第二次grep使用了-v选项,即逆向匹配,打印出不匹配的行
grep -nr "whatever you like" * | grep -v "\.svn/*"
3. 如果每次都输入--exclude-dir=参数,是不是很慢还容易出错,降低效率呢?
不过不用担心,我们可以把--exclude-dir=参数通过加入配置文件 ~/.bashrc (这是bash的当前用户配置文件) 的方法来简化操作,提高效率。
在~/.bashrc文件的末尾添加以下命令:
[plain] view
plaincopy
export GREP_OPTIONS="--exclude-dir=\.svn"
然后保存,执行source ~/.bashrc或者. ~/.bashrc,使修改起作用。
然后搜索时,执行以下命令即可:
grep -nr MediaButton *
这样默认就会加载GREP_OPTIONS选项,不搜索.svn目录。
需要注意的是,GREP_OPTIONS这个关键词不能修改为其他的,否则系统就不会认为是grep的一个选项参数了。
参考:
http://stackoverflow.com/questions/1491514/exclude-svn-directories-from-grep
http://hi.baidu.com/jasonlyy/item/6a9594e7438e97a1c00d755c
相关文章推荐
- Linux中的进程状态
- 进程和计划任务管理
- JDK, JRE 和JVM
- 完美解决VMware Workstation : Could not open /dev/vmmon: No such file or directory
- php:移除Remove Microsoft Word HTML Tag
- 在Struts2中ValueStack、ActionContext、ServletContext、request、session关系分析
- LeetCode 4Sum
- 使用存储过程 修改符合条件的数据表的相关字段 的数据类型
- malloc() vs new
- java.lang.RuntimeException: Parcel: unable to marshal value
- 引导过程和服务控制
- PHP获取当前url的具体方法全面解析
- Can't locate Net/HandlerSocket.pm
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- 带你走进Android Afinal框架的世界
- Can't locate Net/HandlerSocket.pm
- 【冬季围巾暖搭的任意门】
- 获取Android手机中所有的短信
- 闭包基础概念,闭包详解
- UML建模之部署图(Deployment Diagram)