使用 ack-grep 忽略 *.egg-info 目录

ignore *.egg-info directories with ack-grep

我注意到 ack-grep 不会忽略 python 在源代码旁边创建的 <module>.egg-info 目录。我希望我可以添加

--ignore-dir=*.egg-info
or
--ignore-file=ext:egg-info

作为一个包罗万象,无需将每个项目的 .egg-info 目录手动添加到 ~/.ackrc。

有没有一种方法可以做到这一点而不必手动添加所有这些?

您可以使用与指定类型时相同的过滤系统来指定 --ignore-dir。使用 ack --dump 查看默认设置,它们应该会让您了解如何执行此操作。 (以及在 ack --man 处查看手册中的 "Specifying your own types")

所以你可以这样做:

ack --ignore-dir=match:[.]egginfo$ whatever

请注意,当您使用 match 时,它是 Perl 正则表达式,而不是 glob。这就是说"Ignore any directory that matches .egginfo at the end of the name"。 . 是一个元字符,放在字符 class ([.]) 中以去除其特殊含义。您也可以使用 \.,但这样也会与 shell 混淆。

因此您可以将 --ignore-dir=match:[.]egginfo$ 放入您的 ~/.ackrc 中,不再担心它。

...

对于我们这些不熟悉 Python 生态系统的人,您能否详细介绍一下 <module>.egg-info 目录是什么,它们是在何处以及如何创建的?它基本上是一个构建目录吗?我是 ack 的作者,这听起来像是默认忽略 ack 的好东西。