银色搜索器 - 如何忽略一个文件

50

根据文档,它应该是这样的

--ignore PATTERN

我有一个文件,包含标签,名为“tags”。我尝试了以下方法,但它们仍然会搜索标签文件..

ag -Qt --ignore ".*tags" "asdf"

ag -Qt --ignore .*tags "asdf"

ag -Qt --ignore "tags" "asdf"

ag -Qt --ignore tags "asdf"

ag -Qt --ignore *tags

而且它们都不起作用。

如果我使用这里建议的方法,那么ag根本不接受它。

我试图通过将其重命名为temp.tags并使用*.tags模式来尝试忽略它,但它仍然不起作用。

有什么想法吗?

10个回答

43

将要排除的文件列表放在.agignore中。

注意:正如@DenilsonSáMaia所提到的,.agignore将被弃用,取而代之的是.ignore geoff.greer.fm/2016/09/26/ignore


3
好的回答。有关.agignore的更多详细信息,请参阅:https://github.com/ggreer/the_silver_searcher/wiki/Advanced-Usage - Janos
2
.agignore 将被弃用,取而代之的是 .ignore: http://geoff.greer.fm/2016/09/26/ignore/ - Denilson Sá Maia
1
.agignore 适用于 ag 版本 2.0.0,请查看源代码 https://github.com/ggreer/the_silver_searcher/blob/e5230abd98633e9bd408dfec9d26df30db09334b/src/options.c#L681 - michalzuber
2
“.agignore”是正确的文件。现在是2021年,它仍然没有被弃用,很可能永远不会被弃用。 “.ignore”将是一个糟糕的名称,因为你不会真正知道它属于什么,而且可能会有另一个应用程序使用它。 - ffxsam
1
我刚尝试使用.agignore(使用ag 2.2.0),但它没有起作用;将其重命名为.ignore起作用了。 - anol
显示剩余4条评论

22

只需添加多个 --ignore 参数,至少这对我有效:

ag -Qt --ignore ".*tags" --ignore asdf

如果您不使用引号,它会被解释为目录。如果您使用引号,则会作为模式进行解释。


16

我发现--ignore不接受正则表达式。

这应该会有所帮助:

ag --ignore="*_test.rb" "SomeAwesomeClass"

这也是我看到的行为。你的评论帮了我很多。如果字符串包含特殊字符,它似乎会将其视为 glob 模式,如果没有,则将其视为字面目录。引号似乎根本不改变它的行为。 - Tariq C

11

经过一些研究,似乎这是一个已知问题,文档可以在这里找到。如果使用--all-text(-t)进行搜索,它将覆盖--ignore选项,因为它正在搜索所有文本。这个问题也存在于--unrestricted选项中。


我发现这个答案结合了@ArturMałecki的答案,解释了为什么--ignore对我无效。 - ken hicks

5

从v2.2.0开始(可能早期版本也是这样,我只是按照我的版本进行操作),所有这些答案似乎都不起作用。对我有效的是:

ag searchterm --ignore=*.log --ignore=*.txt

请注意,在ignore选项后面有一个=

2
你可以创建.ignore文件来忽略源代码库中的某些内容。.ignore使用与.gitignore和.hgignore相同的模式。使用.ignore可以极大地提高搜索速度。
如果你想要一个全局的.ignore文件,请考虑添加以下别名:
alias ag='ag --ignore ~/.ignore' 

向您的~/.bash_profile(或类似文件)中添加此内容。还有一个方法是,您可以使用--skip-vcs-ignores选项来暂时禁用版本控制系统的忽略。"最初的回答"

“--path-to-ignore /.ignore” 对我没用。而“--ignore=/.ignore”可以。 - cevaris

1

我只是将 .agignore 文件放在我的用户根目录中,它就起作用了。

默认情况下,ag将忽略.gitignore、.hgignore或.agignore中匹配的文件模式。这些文件可以存在于被搜索的任何目录中。Ag还会忽略子版本库中svn: ignore属性匹配的文件。最后,ag在$HOME/.agignore中查找忽略模式。二进制文件也被默认忽略。

https://manpages.ubuntu.com/manpages/trusty/man1/ag.1.html


1
对于我来说,在ag版本0.18.1中,以下内容有效:
ag --ignore TAGS;*.pdf;*.json "search_term"

0

我尝试了您发布的链接(使用glob而不是regex),但删除了“=”符号,它可以工作。


1
我无法重现使用globs的情况。你能否发布一下实际有效的代码行? - cchamberlain

-1

你尝试过使用单引号吗?我知道有时候使用双引号或者不加引号会让人困惑,但是使用单引号却可以解决问题。

ag -Qt --ignore '*tags'

5
为什么你的单引号看起来像反引号? - cchamberlain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接