仅限git grep文件名

时间:2018-02-25 06:16:06

标签: git grep

我想只查看其文本中有特定字词的不同文件。

current_directory$ git grep 'word'

显示文件的每一行都有匹配的单词

所以我试过这个

current_directory$ git grep 'word' -- files-with-matches
current_directory$ git grep 'word' -- name-only

但它没有显示任何输出。

另外,有人可以告诉我如何计算所有文件中'word'的总出现次数。

任何帮助都会感激不尽:)

2 个答案:

答案 0 :(得分:7)

错误消息有帮助

$ git grep 'foo' --files-with-matches 
fatal: option '--files-with-matches' must come before non-option arguments

$ git grep --files-with-matches 'foo'
<list of matching files>


要计算单词,我就是GNU grep这样做,不确定git grep是否有相关选项

$ grep --exclude-dir=.git -RowF 'foo' | wc -l
717

来自man grep

  

-R, - dereference-recursive   递归地读取每个目录下的所有文件。跟随所有符号链接,与-r。

不同      

-o, - 仅匹配   仅打印匹配行的匹配(非空)部分,每个此类部分位于单独的输出上   线。

     

-w, - word-regexp   仅选择包含构成整个单词的匹配项的行。测试是匹配的   substring必须位于行的开头,或者前面是非单词构成字符。   同样,它必须位于行的末尾或后跟非单词构成字符。   单词构成字符是字母,数字和下划线。

     

-F, - 固定字符串   将PATTERN解释为固定字符串列表(而不是正则表达式),由换行符分隔,   其中任何一个都要匹配。

     

- 排除-DIR = DIR   从递归搜索中排除与模式DIR匹配的目录。

答案 1 :(得分:0)

docker inspect -f '{{ .Name }}{{ printf "\n" }}{{ range .Mounts }}{{ printf "\n\t" }}{{ .Type }} {{ if eq .Type "bind" }}{{ .Source }}{{ end }}{{ .Name }} => {{ .Destination }}{{ end }}{{ printf "\n" }}' <continaer-id>

“-匹配文件”必须在搜索字符串之前