Linux下的egrep如何忽略特定结尾文件/特定文件夹/二进制文件?

发布于 2022-09-03 13:49:23 字数 1986 浏览 13 评论 0

描述问题

有三个需求(见标题), 而且这几个需求很常见
但是我搜索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

问题简化

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我的影子我的梦 2022-09-10 13:49:23

用管道,比如这样?

find -type f (-not -name '*ext') -and (-not -type d -name 'dir') | xargs -n1 -I{} grep --exclude=GLOB 'search_str' {}
╄→承喏 2022-09-10 13:49:23

去掉 \

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文