我的git仓库里有一个文件Foo.txt
,我想知道它在哪里。
我可以使用find . -name Foo.txt
在文件系统中搜索该文件,但这有两个问题:
1.我有很多未跟踪的目录,我不关心其中存在的任何巧合的Foo.txt
文件
1.我有很多未跟踪的目录,find
将浪费大量时间毫无意义地搜索它们
但是,我知道git
索引了存储库中的所有文件,并且可以非常快地返回它们,如果我使用git ls-files
,它将在毫秒内打印出存储库中所有被跟踪的文件。
所以当我想找到文件时,我确实可以执行git ls-files | grep Foo.txt
,但是:
1.我觉得我不应该输入| grep
,我是一个懒惰的流浪汉,宁愿在StackOverflow上问这个问题,也不愿每次我想永远这样做的时候永远输入| grep
。
1.这感觉就像cat Foo.txt | grep some_pattern
problem,其中 * 您应该只执行 * grep some_pattern Foo.txt
1.每当您向stdout
和grep发送一个巨大的文本块以获得您想要的内容 * 而不是使用该工具来实现它的设计目的 * 时,就会有一个天使失去翅膀
1.好吧,我可以在.zshrc
中定义一个函数来完成这个任务,但这不可能是正确的方法,对吗?
此外,git-ls-files
documentation似乎并不表明我想要的是可能的。我注定要永远通过自定义的zshrc函数来grepping git ls-files
的输出吗?
2条答案
按热度按时间col17t5w1#
我发现我可以用这样的东西:
我没有检查边缘情况,但是在我的测试中,输出似乎与grep的输出相同(这里,
'*config.js*'
将匹配任何tsconfig.json
文件,就像grep版本一样)。引号是必需的(没有引号,它只会检查当前文件夹,因为shell会展开星号)
9gm1akwq2#
尝试一下路径规范魔法,
但是考虑到单词的数量,我认为
grep
更简单。