如何仅搜索具有特定文件扩展名的 git 跟踪文件?

如何仅搜索具有特定文件扩展名的 git 跟踪文件?

我想搜索所有 git 跟踪的文件,1. 具有文件扩展名,2.在任何行中.hs包含该单词。import

我尝试过使用git ls-files -z | xargs -0 rg -g '*.hs' "import",但不幸的是,如果您将显式文件列表传递给它,rg它似乎会忽略-gglob 标志。

我可能会使用grep一些正则表达式lookbehind来提取具有特定文件扩展名的文件,或者可能过滤输出git ls-files -z(确保我们保留空分隔的文件名方面,但这两种方法似乎都有点笨拙......

如果有人有任何想法。

答案1

git grep也可以为您执行此操作:

git grep import -- '*.hs'

*.hs这将从当前目录开始在所有匹配的 git-tracked 文件中搜索“import” 。

答案2

我希望我没有误读这个问题。如果你想“搜索所有import在任何行中包含该单词的 git 跟踪文件”,应该是:

git ls-files -z | xargs -0 grep -l import

如果您只想在*.hs文件中搜索,那么:

git ls-files -z '*.hs' | xargs -0 grep -l import

相关内容