1

我正在尝试将复杂的正则表达式作为忽略模式传递。我想忽略locales/ except 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

想法?

4

2 回答 2

1

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

ag -g "" --ignore locales/^US/ --ignore locales/US/^en
于 2016-05-05T17:34:23.563 回答
0

以下也可以工作:

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

手册页文档

-修剪真;如果文件是目录,请不要深入其中。如果给出 -depth,则为 false;没有效果。因为 -delete 意味着 -depth,所以不能同时使用 -prune 和 -delete。

-prune让你过滤掉你的结果(更好的描述在这里

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

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

于 2016-05-06T19:00:12.870 回答