当前位置:网站首页>grep时排除指定的文件和目录
grep时排除指定的文件和目录
2022-07-30 12:20:00 【武念】
参考:
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选项,从而节省不少输入的时间:)
边栏推荐
- 开源出来的fuse版pfs文件系统主要就是解决缓存问题吧。nfs挂载参数带sync规避缓存问题是不是
- 基于柔性人机接口的人机协调运动控制方法
- Win11打不开exe应用程序怎么办?Win11无法打开exe程序解决方法
- PyQt5快速开发与实战 8.2 绘图 && 8.3 QSS的UI美化
- Decoding Redis' most overlooked high CPU and memory usage issues
- CMake库搜索函数居然不搜索LD_LIBRARY_PATH
- 力扣——11.盛最多水的容器
- Go 事,Gopher 要学的数字类型,变量,常量,运算符 ,第2篇
- Apifox generates interface documentation tutorial and operation steps
- 概率论的学习整理1: 集合和事件
猜你喜欢

Heshu Group: Make smart cities smarter and make real life better

【记一个kaggle划水比赛】PetFinder.my - Pawpularity Contest 宠物预测

unity对象池(学习)

亚洲高校首现KDD博士论文奖:清华裘捷中获Runner Up奖,WINNER奖也是位华人

Win11打不开exe应用程序怎么办?Win11无法打开exe程序解决方法

MySQL【排序与分页】

概率论得学习整理--番外3:二项式定理和 二项式系数

概率论的学习和整理7:理解期望和方差还是要回到随机试验本身,期望不是平均值,方差的公式不同情况不同

CV-Model【2】:MobileNet v1

Why is Prometheus a monitoring artifact sufficient to replace Zabbix?
随机推荐
Rust from entry to proficient 02-installation
[BJDCTF2020]Cookie is so stable-1|SSTI注入
PyQt5快速开发与实战 8.2 绘图 && 8.3 QSS的UI美化
即时通讯-改变社交与工作状态的新型软件
Matlab基础(4)——矩阵
Mysql索引结构
历时两月,终拿字节跳动offer,算法面试题分享「带答案」
Zhou Hongyi: Microsoft copied the 360 security model and became the largest security company in the United States
ECCV 2022 | 新加坡国立大学提出:全新可恢复型模型遗忘框架LIRF!
[BJDCTF2020]Cookie is so stable-1|SSTI injection
结合实战,浅析GB/T28181(三)——实况点播
概率论的学习和整理--番外4: 关于各种平均数:算术平均数,几何平均数,调和平均数,以及加权平均数和平方平均数 (未完成)
亚洲高校首现KDD博士论文奖:清华裘捷中获Runner Up奖,WINNER奖也是位华人
关于香港高防IP需要关注的几个问题
如何把Excel表格显示到邮件正文里?
重建丢失的数据
力扣——11.盛最多水的容器
WinForm枚举容器中的控件,实现控件统一事件处理机制
Heshu Group: Make smart cities smarter and make real life better
CMake库搜索函数居然不搜索LD_LIBRARY_PATH