grep不查找隐藏文件夹的方法
2015-05-05 20:21
363 查看
默认的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 *
或者
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选项,即逆向匹配,打印出不匹配的行
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的一个选项参数了。
例如,使用如下命令搜索MediaButton字符串,搜索结果包含隐藏文件夹下的文件。
grep -nr MediaButton *
如果是用svn管理的代码,每个文件夹下都有一个.svn的隐藏文件夹,包含对代码版本的控制信息,日积月累会越来越庞大。所有如果只是默认搜索的话,很多搜索结果都是svn目录下的,对我们来说,是没有价值的内容;而且还会耗费很多时间。
grep的--exclude-dir=参数就是为了排除某个目录的,即不包含等号后面的目录,所以我们可以利用此参数去掉.svn的隐藏目录。
--exclude-dir=参数的用法如下:
1. If you have GNU Grep, it should work like this:
<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">grep </span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">--</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">exclude</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">dir</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">=</span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">".svn"</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> </span></code>
例如:查找当前目录以及子目录下所有包含"MediaButton"字符串的代码并打印行号
grep -nr --exclude-dir=".svn" MediaButton *
或者
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选项,即逆向匹配,打印出不匹配的行
<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">grep </span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">R </span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">"whatever you like"</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> </span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">*|</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">grep </span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">v </span><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">"\.svn/*"</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> </span></code>
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的一个选项参数了。
相关文章推荐
- grep不查找隐藏文件夹的方法
- grep不查找隐藏文件夹的方法
- Linux命令-----grep不查找隐藏文件夹的方法
- grep不查找隐藏文件夹的方法
- Linux命令-----grep不查找隐藏文件夹的方法
- Linux命令-----grep不查找隐藏文件夹(或者跳过某些文件夹)的方法
- Linux命令-----grep不查找隐藏文件夹的方法
- grep不查找隐藏文件夹的方法
- grep不查找隐藏文件夹的方法
- 查找mac系统下的隐藏文件以及隐藏文件夹的方法
- 最简单的隐藏文件夹方法
- 查找文件夹中的所有文件及子文件夹的方法,附源程序,VC7.1下编译运行通过
- 如何让隐藏的文件夹显示,为百度查找的链接
- matlab查找指定文件夹下文件(附汉字和标点符号读取方法)
- [学习]最简单的隐藏文件夹方法
- Android 系统中隐藏文件或文件夹的方法
- 隐藏文件夹的一种方法 来自网络
- VIM下,在文件及目录中查找字符串的方法 (vimgrep)
- VIM下,在文件及目录中查找字符串的方法 (vimgrep)
- Ant步步为营(5)用for和foreach的方法遍历一个文件夹,查找到某个文件并删除