Прошло некоторое время с тех пор, как я не использую 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
, чтобы получить информацию о дополнительных возможностях.