Silver Searcher:我怎样才能仅 return 匹配某个模式的文件夹结果?

Silver Searcher: How can I only return results in folders matching a pattern?

我的文件结构是这样的:

A
   G (want to ignore)
   H (want to ignore)
   X (contains files I want to search)
B
   G (want to ignore)
   H (want to ignore)
   X (contains files I want to search)
C (want to ignore)
X (contains files I want to search)

我只想 return 结果,其中 X 是 某处 目录路径。

看起来我可以使用 ag foo --ignore={G,H},但是要忽略的文件夹列表会非常(几乎令人望而却步)长。我通常想在所有文件夹中搜索,这样我就可以手动构建一个包含所有内容的全局忽略文件,并在我想忽略大部分内容时将其交换到位。

我发现此语法允许我在 ABX 文件夹中搜索,所以我很接近!

ag foo */X

所以问题本质上是:我怎样才能拥有任意数量的正斜杠(0、1 或更多)?

简单的ag命令是不够的

我认为这不仅仅是通过 ag(白银搜索者)命令。您需要以某种方式从整个目录树中过滤输入文件,根据 X 目录名进行过滤。

我会按照这些思路做一些事情:

ag 'search\sstring'  `tree -dfi | ag '\/X.*'`  | less

它有什么作用?

命令在:

`

被执行,然后通过 ag.

搜索输出
  1. 过滤目录 tree -dfi ...打印您要搜索的整个路径(目录和文件)
  • -d ... 仅打印目录
  • -f ...打印每个文件的完整路径前缀
  • -i ... 跳过输出中的空格(尝试尽可能可处理)

ag '\/X.*' ... 在路径中搜索目录 /X(后跟出现 0 次或多次的任何字符)- 使用任何将 select 目录的正则表达式想搜索。

  1. 在文件中搜索文本

ag 'search\sstring' ... 在过滤后的路径

中搜索 'search string' 字符串

less 是否有可搜索的输出(您可以根据需要重定向)