如何使用 ag 仅搜索以特定字符开头的文件?

How can I search only files that start with a certain character using ag?

假设我在一个目录中有两个文件:

.test
test.txt

如何将我的 ag 搜索限制为仅以 . 开头的文件?

我尝试了多种模式,但 none 奏效了。

How can I limit my ag search to only files that begin with a .?

像这样:

ag -u -G ^\..*$ PATTERN

在您的示例中,文件 .test 是隐藏的,因此选项 -u 派上用场。这个选项可能是您在搜索中错过的。

我来解释一下正则表达式^\..*$:

  • ^表示:字符串的开头
  • \.表示:一个点字符
  • .* 表示:任意字符 (.) 任意次数 (*)
  • $是可选的;它标记要匹配的字符串的结尾

注意:我为 ag 打开了一个 bug tracker,因为我看到搜索不限于名称以 . 开头的文件,因为它应该是这个正则表达式。


更一般地说,要在名称与 REGEX 匹配的文件中搜索 PATTERN,可以使用:

ag -G REGEX PATTERN

(与ag --file-search-regex REGEX PATTERN相同)

查看手册以获取有关 ag 的更多信息。