参考:
http://winterth.duapp.com/notes/ar03s04.html
http://blog.sina.com.cn/s/blog_7169c8ce0100qkyf.html --exclude=FILE_PATTERN skip files and directories matching FILE_PATTERN
--exclude-from=FILE skip files matching any file pattern from FILE
--exclude-dir=PATTERN directories that match PATTERN will be skipped.

虽然help中说“--exclude”可以忽略文件和目录,可是实际测试中发现并不能忽略目录。所以,要排除目录,还得用“--exclude-dir”

例如:

grep -rn --exclude-dir=build_* --exclude-dir=kernel --exclude-dir=drivers --exclude=*.out 'abcdefg' .
grep --exclude-dir=".svn" U_BOOT_CMD * -nR --exclude="cscope.out" --exclude="tags"

在当前目录下查找所有“abcdefg”的字符串,但不在以“build_”开头的目录、“kernel”和“dirvers”中查找,同时忽略所有以“out”为后缀的文件。


grep简介(熟悉的同学可以直接省略这一部分):

    全称是global search regular expression_r(RE) and print out the line,即全文搜索正则表达式,并把匹配的结果打印出来,是linux下非常强大的文本搜索工具。
    因为是命令行工具,它可以灵活地指定匹配模式、选项和要匹配的目标文件,如果结合linux下特有的管道命令" | ",其功能要比windows自带的搜索工具和一些windows下文本编辑器强大很多。
 
    由于工作要求在linux环境下进行C++开发,接触linux时间尚浅,没有遇到一款功能较为齐全且较为顺手的IDE,因此查看源代码时很多功能需要手动在bash下完成,比如常常需要查看一个函数在整个源码库中的调用情况
    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" 
    (注意 = 的前后不能有空格,不然在载入该配置文件时会提示错误)
    export GREP_OPTIONS="--exclude-dir=\.svn --exclude-dir=\.git --exclude=tags --exclude=cscope\.out"
 
    保存并关闭,同时在命令行键入如下命令:
    source ~/.bashrc  (让bash重新读取脚本)
    当然,你也可以简单地关闭shell并重新打开一个shell窗口
 
    这样当你使用grep时,bash都会自动帮你附加--exclude选项,从而节省不少输入的时间:)

grep时排除指定的文件和目录的更多相关文章

  1. Sublime Text 查找时排除指定的文件夹或文件

    Sublime Text 查找时排除指定的文件夹或文件 Ctrl + Shift + F这组快捷键可以调出 Sublime Text 的查找替换窗口,里边有一栏 Where,可以做一些高级设置:d:\ ...

  2. 7z压缩文件时排除指定的文件

    分享一个7z压缩文件时排除指定文件类型的命令行,感觉很有用: 7z a -t7z d:\updateCRM.7z d:\updateCRM\*.* -r -x!*.log -x!*bak a:创建压缩 ...

  3. Linux tar命令之--exclude参数 排除指定的文件或目录

    https://my.oschina.net/u/3285916/blog/1632552 参数: --exclude 打包时排除不需要处理的文件或目录 说明: tar -zcf a.tar.gz 打 ...

  4. ZIP、tar.gz压缩时排除指定目录

    1.ZIP 压缩时排除一个文件夹下所有内容zip -r sss.zip sss/ -x "sss/222/*" 压缩时排除指定多个文件夹下所有内容zip -r sss.zip ss ...

  5. 关于压缩jar包时提示*.*没有这个文件或目录的问题以及解决办法:

    关于压缩jar包时提示.没有这个文件或目录的问题以及解决办法: 问题描述: 我在打包jar时,CMD中进入到包的上一层目录. 在命令提示符中输入 提示如下: 从提示中可知没有找到我们想要打包的clas ...

  6. Find 查找命令时过滤掉某些文件或目录 以及 -maxdepth、-mindepth的用法

    1)find过滤目录使用find命令在linux系统中查找文件时,有时需要忽略某些目录,可以使用"-path 过滤的目录路径 -prune -o"参数来进行过滤.不过必须注意:要忽 ...

  7. inotify-tools的inotifywait工具用exclude 和 fromfile 排除指定后缀文件

    今天打算使用 inotify-tool 来对线上程序文件进行监控, 因为有些目录是缓存目录, 所以要进行排除, 同时还要排除一些指定的后缀的文件, 比如 .swp 等 需要递归监控的目录为: /tmp ...

  8. java 序列化时排除指定属性

    java 序列化对象如何排除指定属性呢? java 中序列化对象有多种方式:struts2 ,jackson,json-lib (1)使用struts2 json插件 依赖的jar包:struts2- ...

  9. 怎样cp文件夹时忽略指定的文件夹和文件

    在备份ltedecoder程序时,须要把此文件夹拷由到bak文件夹下.但decoder文件夹下有个大文件,不须要备份,还有日志问题,也不须要备份,怎样实现呢?? 方法: cd /source-dir ...

随机推荐

  1. 为cocos2d-x项目增加Lua支持

    开始为游戏增加Lua脚本支持,今天主要配置了一下开发环境:cocos2d-x 2.2.1,xcode5. 1. 创建cocos2d-x-lua项目 类似于创建C++项目,用以下命令即可: python ...

  2. 自学hadoop(三)

    1) 关于hadoop在eclipse插件.经过自己的摸爬滚打.总结一下三条.     a) 2.0或者0.23.0吧 google比较方便.其他的可以自己编译.(这个我不敢保证.我本地环境事2.1. ...

  3. Spring Framework 中启动 Redis 事务操作

    背景: 项目中遇到有一系列对Redis的操作,并需要保持事务处理. 环境: Spring version 4.1.8.RELEASE Redis Server 2.6.12 (64位) spring- ...

  4. homework-1

    看到这个题目开始我只能想到动态规划四个字,但具体采用什么方法,如何写成代码却还未成型.动态规划的典型特点就是利用之前的结果.于是我很快想到了之前一个比较典型的小程序,即求最长的连续字符串.这两个题目有 ...

  5. Gym 100507L Donald is a postman (水题)

    Donald is a postman 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/L Description Donald ...

  6. [iOS微博项目 - 2.0] - OAuth授权3步

    A.概念      OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用 ...

  7. [HDU 4089]Activation[概率DP]

    题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...

  8. final static T

    /** * An empty table instance to share when the table is not inflated. */ static final Entry<?,?& ...

  9. 【Java】多线程冲突解决——同步锁

       转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827547.html    解决并行冲突最有效的方法就是加同步锁,主要有以下几种方法:   1:动态方法 ...

  10. hdu 4786 Fibonacci Tree (2013ACMICPC 成都站 F)

    http://acm.hdu.edu.cn/showproblem.php?pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others) ...