grep -r (или -R) не выполняет поиск внутри подпапок

grep -r (или -R) не выполняет поиск внутри подпапок

Прошло некоторое время с тех пор, как я не использую Linux, вместо этого использую Windows. В Windows, когда я хочу найти строку в файлах и файлах внутри подпапок, я делаю это (например, для файлов CS)

findstr /s /i /n "Thepattern" *.cs

Недавно я узнал, что можно использовать grep в MINGW64, который устанавливается при использовании Git. Поэтому я попробовал

grep --color -n -r "Thepattern" *.cs

Но даже если я и ввожу -rпоиск, подкаталоги не включаются.

Что я делаю не так с grep? и как должно быть?

EDIT: Anaksunaman дал мне правильный ответ:

grep --color -n -r --include=*.cs "Thepattern"

и несколько других вариантов :) Спасибо!

решение1

Я узнал, что можно использовать grep в MINGW64, который устанавливается при использовании Git.

Я предполагаю, что вы имеете в виду Git Bash.

Что я делаю не так с grep? И как должно быть?

Вам стоит попробовать это:

 grep --color -n -r --include=*.cs "ThePattern"

--include=должно идти после -r. Это ограничит результаты файлами, которые заканчиваются на ".cs". Вы также можете указать каталог, если хотите, например:

grep --color -n -r --include=*.cs "ThePattern" ~/some/directory/'with spaces'

В данном случае ~это относится к папке вашего профиля пользователя в Windows.

Кроме того, если предположить, что «ThePattern» — это строковый литерал, вам может потребоваться включить , -iчтобы сделать все нечувствительным к регистру, например:

 grep --color -n -i -r --include=*.cs "ThePattern"

В противном случае «ThePattern» не будет тем же самым, что, например, «Thepattern», и вы можете не получить никаких результатов.

Обратите внимание, что вы всегда можете воспользоваться grep --help, чтобы получить информацию о дополнительных возможностях.

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