Мне нужно сделать рекурсивный grep в Windows, что-то вроде этого в Unix / Linux:
grep -i 'string' `find . -print`
или более предпочтительный метод:
find . -print | xargs grep -i 'string'
Я застрял только с cmd.exe, поэтому у меня есть только встроенные команды Windows. К сожалению, я не могу установить Cygwin или какие-либо сторонние инструменты, такие как UnxUtils, на этот сервер. Я даже не уверен, что смогу установить PowerShell. Любые предложения, использующие только встроенные модули cmd.exe (Windows 2003 Server)?
windows
command-line
grep
Энди Уайт
источник
источник
grep -i 'string' -R .
, чтобы, как предлагает @NathanFellman, избежать проблемы слишком длинных команд.Ответы:
findstr
может выполнять рекурсивный поиск (/ S) и поддерживает некоторый вариант синтаксиса регулярных выражений (/ R).источник
Параметры имеют следующие значения:
s
= рекурсивныйp
= пропустить непечатные символыi
= без учета регистраn
= печатать номера строкИ строка для поиска - это бит, который вы вставляете в кавычки после
/c:
источник
spin
? Это строка текста, чтобы найти? И не используется ли / g или / f для указания файлов? Так что с квадратными скобками?findstr /?
объясняет каждый параметр. s = рекурсивный, p = пропустить непечатаемые символы, i = без учета регистра, n = напечатать номера строк. Вам не обязательно все это нужно, но они мне нравятся, и ихspin
легко запомнить. Строка для поиска - это бит, который вы вставляете в кавычки после/c:
./?
, но я на самом деле не знал, что модификаторы были использованы как/spin
. Я думал, что они были использованы как/s/p/i/n
./
s. Это один Не все из них позволяют вам это делать. Вы знаете, CMD очень особенный.Я только что искал текст с помощью следующей команды, которая перечисляла мне все имена файлов, содержащие мой указанный «текст поиска».
источник
Я рекомендую действительно отличный инструмент:
родные утилиты Unix:
Просто распакуйте их и поместите эту папку в переменную окружения PATH и вуаля! :)
Работает как шарм, и есть гораздо больше, чем просто grep;)
источник
Рекурсивный поиск
import
слова внутриsrc
папки:источник
источник
Select-String
работал лучше для меня. Все остальные параметры, перечисленные здесь, напримерfindstr
, не работают с большими файлами.Вот пример:
примечание : для этого требуется Powershell
источник
Если у вас установлен Perl, вы можете использовать ack , доступный по адресу http://beyondgrep.com/ .
источник