2016-05-04 23 views
1

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

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

这个作品真的很好,忽略所有的语言环境的子文件夹除了locales/US

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

我也想忽略所有locales/US/*除了locales/US/en 想我要的就是这一点,但它不工作。

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

想法?

回答

1

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

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

哇。工作就像一个魅力 –

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。以下所有找到的参数都被认为是该命令的参数,直到由';'组成的参数遇到。字符串'{}'被替换为当前文件名,在它发生在命令的参数中的任何地方都会被处理,而不仅仅是单独存在的参数,就像在某些版本的find中一样。这两个构造可能都需要被转义(用'\')或引号来保护它们免受shell的扩展。有关使用-exec选项的示例,请参阅EXAMPLES部分。指定的命令对每个匹配的文件运行一次。该命令在起始目录中执行。围绕使用-exec动作存在不可避免的安全问题;您应该使用-execdir选项。

-exec让你执行任何结果的命令find返回。

+0

我误解了这个问题,它不会删除'US/EN'。 – TheIronDeveloper