Linux下的egrep如何忽略特定结尾文件/特定文件夹/二进制文件?
PHP中文网
PHP中文网 2017-04-17 15:39:26
[Linux讨论组]

描述问题

有三个需求(见标题), 而且这几个需求很常见
但是我搜索man文档,也按照它的指示做了,但是总感觉姿势不对(不符合预期结果)

然后Google了一番,结果无非和man文档差不多
所以我的问题可以转化为: 怎么读懂文档中关于exclude的部分?

根据我自己的理解,总结为以下几点:

  1. 使用shell通配符

  2. --exclude-from, --exclude-dir分别针对文件,文件夹. --exclude貌似是一个大的选项

  3. 针对二进制文件用-I, 但是grep怎么知道哪些是二进制文件? (应该有某种配置选项?)

比如有这几个情况,我构造的命令分别如下

  1. 忽略.pyc文件 --exclude-from="*.pyc"

  2. 忽略.svn目录 --exclude-dir="\.svn"

  3. 忽略二进制文件, -I (我对这个选项真是不理解)

上下文环境

  1. Linux Ubuntu16

  2. GNU grep 2.6.3

  3. 我的alias: alias grep='egrep --color=auto'

我工作时构造的命令: grep -r --exclude-dir="\.svn" 'KeyValue\b' ./
`

重现

  1. man grep

  2. 有.svn目录最好, .git目录也可以, 或其他

  3. 尝试使用grep的exclude的几个选项

  4. 查看预期结果

相关代码

摘抄grep的man文档中关于exclude的搜索结果

--exclude=GLOB
              Skip  files  whose  base  name  matches GLOB (using wildcard matching).  A file-name glob can use *, ?, and [...]  as wildcards, and \ to quote a wildcard or
              backslash character literally.

       --exclude-from=FILE
              Skip files whose base name matches any of the file-name globs read from FILE (using wildcard matching as described under --exclude).

       --exclude-dir=DIR
              Exclude directories matching the pattern DIR from recursive searches.

报错信息

我构造的命令是grep -r --exclude-dir="\.svn" 'KeyValue\b' ./
报错信息为: 仍然会搜索.svn中的文件

相关截图

已经尝试哪些方法仍然没有解决(附上相关链接)

结果很好找,但是不知道为何我的结果有点不同
Google了

  1. grep ignore spcific directory

  2. grep exclude binary file

  3. grep exclude some file

  4. grep exclude pyc file

问题简化

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
PHP中文网

用管道,比如这样?

find -type f (-not -name '*ext') -and (-not -type d -name 'dir') | xargs -n1 -I{} grep --exclude=GLOB 'search_str' {}
迷茫

去掉 \

grep -r --exclude-dir=".svn" 'KeyValue\b' ./

--exclude-dir 里的路径应该使用通配符(wildcard),文本查找使用正则表达式(regular expression)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号