我想搜索所有 git 跟踪的文件,1. 具有文件扩展名,2.在任何行中.hs
包含该单词。import
我尝试过使用git ls-files -z | xargs -0 rg -g '*.hs' "import"
,但不幸的是,如果您将显式文件列表传递给它,rg
它似乎会忽略-g
glob 标志。
我可能会使用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