我希望只查看文本中包含特定单词的不同文件。
current_directory$ git grep 'word'
显示具有匹配单词的文件中的每一行。
所以我尝试了这个。current_directory$ git grep 'word' -- files-with-matches
current_directory$ git grep 'word' -- name-only
但是它没有显示任何输出。
另外,我如何计算所有文件中“word”的总出现次数?
错误信息有助于:
$ 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, --only-matching
仅打印匹配行中匹配(非空)部分,并将每个这样的部分单独输出到一行。-w, --word-regexp
只选择包含形成完整单词的匹配项的行。测试是匹配子字符串必须在行首或者前面有一个非单词构成字符。同样地,它必须在行尾或后面有一个非单词构成字符。
单词组成字符是字母、数字和下划线。-F, --fixed-strings
将PATTERN解释为一串固定的字符串(而不是正则表达式),由换行符分隔,任何一个都可以匹配。--exclude-dir=DIR
从递归搜索中排除与模式DIR匹配的目录。
git grep --files-with-matches 'bar'
在搜索字符串之前,需要使用“--files-with-matches”选项
"
--files-with-matches
。在--
后面不要加空格。 - Ry-git grep --files-with-matches 'word'
- Ry-grep -l 'word'
。如果你想要相反的结果,使用grep -L 'word'
。 - jcubic