使用zsh展开命令行排除模式

时间:2016-05-04 20:21:39

标签: regex grep zsh ag fzf

我试图将复杂的正则表达式作为忽略模式传递。我想忽略locales/ 的所有子文件夹,但 locales/US/en/*除外。我可能需要回退使用.agignore文件,但我试图避免这种情况。

我使用银色搜索器(类似于Ack,Grep)。我在终端使用zsh。

这非常有效并且忽略了所有语言环境子文件夹 locales/US除外:

ag -g "" --ignore locales/^US/ | fzf

我还想忽略locales/US/*的所有locales/US/en 外的所有内容 我想要的是这个,但它不起作用。

ag -g "" --ignore locales/^US/^en | fzf

思想?

2 个答案:

答案 0 :(得分:1)

添加多个--ignore命令。例如:

ag -g "" --ignore locales/^US/ --ignore locales/US/^en

答案 1 :(得分:0)

以下内容也适用:

find locales/* -maxdepth 0 -name 'US' -prune -o -exec rm -rf '{}' ';'

Man Pages Documentation

  

-prune   真正;如果文件是目录,请不要进入该目录。如果给出-depth,则为false;没有效果。因为-delete暗示-depth,所以你不能有效地一起使用-prune和-delete。

-prune可让您过滤结果(better description here

  

-exec命令;   执行命令;如果返回0状态,则返回true。以下所有要查找的参数都被视为命令的参数,直到由&#39 ;;'组成的参数为止。遇到了。字符串' {}'由在命令参数中出现的任何位置处理的当前文件名替换,而不仅仅是在某些版本的find中的参数中。这两种结构都可能需要进行转义(使用' \')或引用以保护它们不被shell扩展。有关使用-exec选项的示例,请参阅“示例”部分。为每个匹配的文件运行一次指定的命令。该命令在起始目录中执行。围绕使用-exec操作存在不可避免的安全问题;你应该使用-execdir选项。

-exec允许您对任何结果find返回执行命令。