Только имя файла git grep
Я хочу посмотреть только отдельный файл, в котором есть определенное слово.
current_directory$ git grep 'word'
показывает каждую строку файла с соответствующим словом
Я попробовал это
current_directory$ git grep 'word' -- files-with-matches
current_directory$ git grep 'word' -- name-only
Но это не показывает никакого выхода.
Кроме того, кто-то может сказать, как я могу подсчитать общее количество появлений слова во всех файлах.
Любая помощь была бы благодарна:)
1 ответ
Помогает сообщение об ошибке
$ 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-match Печать только совпадающих (непустых) частей совпадающей строки, каждая из которых находится на отдельной выходной строке.
-w, --word-regexp Выбирать только те строки, которые содержат совпадения, образующие целые слова. Тест состоит в том, что соответствующая подстрока должна быть либо в начале строки, либо предшествовать не состоящему из слова символу. Точно так же, он должен быть либо в конце строки, либо следовать за символом, не входящим в состав слова. Составляющие слова символы - это буквы, цифры и подчеркивание.
-F, --fixed-strings Интерпретировать PATTERN как список фиксированных строк (вместо регулярных выражений), разделенных символами новой строки, любой из которых должен соответствовать.
--exclude-dir = DIR Исключить каталоги, соответствующие шаблону DIR, из рекурсивных поисков.
git grep --files-with-matches 'bar'
"--files-with-match" должно быть перед строкой поиска.