Как избежать .git при поиске строки с помощью grep

Как избежать .git при поиске строки с помощью grep

Я пытаюсь выполнить поиск строки в папке с помощью grep.

grep -r "word" .

Но это включает поиск в файлах .git, чего я хотел бы избежать.

Спасибо

решение1

Если вы хотите исключить .gitкаталоги:

grep --exclude-dir=".git" -r "word" .

Это работает в GNU grep, но не в других версиях, но поскольку вы, судя по всему, используете Linux, то все должно быть в порядке.

решение2

попробуйте 'ack' (http://beyondgrep.com/), он игнорирует .git, .hg, .csv и т. д. и т. п. по отдельности:

По умолчанию выполняется поиск по всем деревьям, при этом игнорируются каталоги Subversion, Git и других систем контроля версий, а также другие файлы, которые не являются исходным кодом.

решение3

Это более гибкое решение для случая, если у вас grepне поддерживается исключение каталогов:

найти . -тип d -путь */.git -prune -o -тип f -print0 | xargs -0 -e grep word

Связанный контент