首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pcregrep排除多个目录?

如何使用pcregrep排除多个目录?
EN

Stack Overflow用户
提问于 2012-09-03 16:03:39
回答 1查看 763关注 0票数 2

我正在尝试从pcregrep的搜索结果中排除多个目录

代码语言:javascript
复制
pcregrep --exclude_dir=^\./(foo/abc|bar/cde)$ --recursive --regex alpha .

换句话说,我希望查找包含alpha的所有文件,并且希望在搜索过程中忽略./foo/abc/*./bar/cde/*文件。不工作,目录不会被排除。怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-03 16:46:22

--exclude_dir模式只匹配目录名,而不是整个路径。因此,您不能在模式中包含/。如果要排除的目录名是唯一的,则可以使用:

代码语言:javascript
复制
pcregrep --exclude_dir='^abc|cde$' -r alpha .

请注意,您经常需要使用'或使用任何其他引用/转义机制来包围模式。在大多数情况下,您可以省略--regex=

如果您使用zsh作为shell并设置了EXTENDED_GLOB,则可以使用以下解决方案来排除整个路径:

代码语言:javascript
复制
pcregrep alpha **/*~(foo/abc/*|bar/cde/*)(.)

但是,您所请求的特性可以很容易地在pcregrep中实现:下载其源代码(pcre library)并进行更改

代码语言:javascript
复制
pcre_exec(exclude_dir_compiled, NULL, nextfile, nflen, 0, 0, NULL, 0)

在文件pcregrep.c to中

代码语言:javascript
复制
pcre_exec(exclude_dir_compiled, NULL, buffer,  (int) strlen(buffer), 0, 0, NULL, 0)

请注意,此更改不向后兼容。最好的方法是引入一个新的--exclude_path标志。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12244055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档