如何使用 ag 又名 the_silver_search 仅搜索目录?

问题描述 投票:0回答:2

我喜欢只搜索目录,而选项

ag --list-file-types
对此没有帮助。坚持使用
ag
的原因是可以选择包含要忽略的模式的
--path-to-ignore
文件。

等效的命令是

fd --type d

ag
2个回答
3
投票

使用 -G 参数,并指定目录名称。

例如,如果您想仅在下载目录中搜索单词“foobar”:

ag -G "Downloads" foobar

要在嵌套目录中搜索:

ag -G "Downloads/some_directory" foobar 

要在多个目录中搜索:

ag -G "Downloads|Documents" foobar

0
投票

您可以在链接命令中使用

ag
从工作目录递归地列出所有目录:

ag --null -g ./ | xargs -0 dirname | sort -u
  • --null
    表示每个
    ag
    输出由
    \000
    分隔,这允许通过
    xargs
  • 处理特殊字符
  • -g
    意味着我们只在 文件名 中搜索,而不是在文件本身中搜索
  • ./
    在当前工作目录运行
  • | xargs -0
    - 将所有(相对)文件路径从
    ag
    传输到
    xargs
    ,它使用
    -0
    接受我们从
    --null
     获得的 
    ag
  • 输出
  • dirname
    仅返回每个文件的目录名称
  • sort -u
    我们对返回的目录进行排序并删除重复项。我们将为它包含的每个文件拥有相同的目录!

然后您可以将该列表的输出传递给

grep
的一些更奇特的东西,例如
[fzf][1]

© www.soinside.com 2019 - 2024. All rights reserved.