не путайте ms-dos с командной строкой. + использование find и findstr и даже grep для windows .. легко найти с помощью быстрого поиска. Есть даже таблицы эквивалентных команд в Linux и Windows. также вы пример bash даже не специфичен для bash .. просто я полагаю, * nix OS.
Барлоп
Ответы:
280
Findstr звучит как то, что вы хотите. Я использую его все время как приблизительный эквивалент grep на платформе Windows.
Да, это то, что я ищу. Я понимаю, что, вероятно, есть ограничения. Я попробую.
chrisjlee
18
почему они не могли просто назвать это grep!
Виктор Граци
6
@VictorGrazi Сначала они это сделали, см. Эту статью . Первоначально он назывался qgrep, но позже был переименован.
Цитракс
3
Большая проблема в findstrтом, что шаблон регулярных выражений может не содержать альтернатив.
Wolf
Вопрос о Windows 7, но какие еще версии Windows имеют findstrпо умолчанию? С Windows XP ?
Питер Мортенсен
44
Есть несколько возможностей:
Используйте порт команды Unix grep. Есть несколько вариантов. Чаще всего упоминаются GNUWin32 , cygwin и unxutils . Менее известными, но в некотором смысле лучше, являются инструменты из служебного инструментария SFUA , которые запускаются в Подсистеме для приложений на основе UNIX, которая поставляется в комплекте с Windows 7 Ultimate Edition и Windows Server 2008 R2. (Для Windows XP, можно загрузить и установить службы для UNIX версии 3.5 .) Этот инструментарий имеет большое количество командной строки TUI инструментов, от mvи duчерез оболочки Korn и C, чтобы perlиawk, Он выпускается в версиях x86-64 и IA64, а также x86-32. Программы работают в собственном POSIX-окружении Windows, а не с DLL-библиотеками эмулятора (такими как cygwin1.dll), наслоенными поверх Win32. И да, инструментарий есть grep, а также около 300 других.
Cygwin прекрасно работал на Win 7. Мне нужен был grep, а GnuWin32 grep не работал для меня.
Козуч
Вы пишете, что я не вижу perl в SUA C: \ Windows \ SUA> dir perl * / s / b Файл не найден и не работает, например, c shell из SUA Я не вижу его в / bin
barlop
Вы также пишете, что SFUA в некоторых отношениях лучше. В каких случаях?
Бароп
@ Козуч, если только вы не заявите, как это не сработало, тогда ваш комментарий бесполезен
barlop
19
Если команды PowerShell разрешены, используйте
PS C:\> Get-ChildItem | Select-String root
или короткий
PS C:\> ls | sls root
Помните, что псевдоним slsопределяется только начиная с PowerShell версии 3.0. Вы можете добавить псевдоним для меньшего ввода:
PS C:\> New-Alias sls Select-String
Чтобы запустить команду PowerShell непосредственно из cmd, используйте
В своей ранней редакции вы написали MS-DOS, есть только FIND, насколько я знаю. Но это древняя ОС, которая больше не используется.
В командной строке Windows NT (например , Win2K и выиграть XP и более поздних, так , например , win7, win10), вы можете использовать findи findstrесли вы загружаете gnuwin32 тогдаgrep
Основные различия заключаются в том, что findstr поддерживает некоторые регулярные выражения . Grep лучше всего поддерживает регулярные выражения.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?и findstr /?показывает вам, что делают переключатели.
У Gnuwin32 есть «пакеты». Если вы загружаете GnuWin32, я предлагаю пакет coreutils для набора базовых полезных утилит, с которыми вы уже знакомы, но в этом случае grep не является его собственным пакетом.
добавленной
Gp GnuWin32, последний раз, когда я проверял, старый. Grep Cygwin's намного более современный. Также имейте в виду, что многие люди используют виртуальные машины, а не порты Windows команд * nix.
Если вы предпочитаете использовать grepвместо UnxUtils версию findstrс одним .exeфайлом , она переносима, и вам не нужно устанавливать ее или использовать что-то вроде Cygwin.
@userunknown хорошо, например, команда unxutils sed старше и не поддерживает \ d например \ d22 для указания кавычки. Старые wget могут не загружать страницы, которые будут доступны более новым, и, если вы попросите поддержки, они могут попросить, чтобы вы получили последнюю версию, поскольку это может решить некоторые проблемы. Действительно старый grep, без сомнения, не будет иметь уровень поддержки регулярных выражений, который есть у текущего
barlop
3
Вы можете попробовать установить Chocolatey в Windows, а затем установить инструмент Gow . Это предоставит вам grepна Windows.
Gowстоять за GNU на Windows. Он предоставляет утилиты командной строки Unix в Windows.
Это менеджер пакетов, как apt-get, но для Windows. Он получил свое имя, потому что разработчик основал его на NuGet, который является менеджером пакетов для Visual Studio, и это звучит как самородок (как в курином наггетсе), поэтому он подумал, что он будет «забавным» или «умным» и вызовет его программа Chocolatey NuGet. Я слышал это на подкасте, который брал у него интервью. Гоу можно скачать самостоятельно тоже
barlop
1
Я новичок в Gow, после нескольких дней использования я могу засвидетельствовать, что он мне очень нравится - он лучше, чем все старые порты утилит UNIX, которые я использовал ранее.
Радим Черней
@RadimCernej ваш комментарий бесполезен, если вы не заявите, как вы думаете, что он лучше.
Барлоп
@barlop: С тех пор как я написал свой комментарий на январь 2016 года, я постепенно и полностью переключился на Gow. Пока нет ошибок, в нем есть все утилиты, которые мне нужны / используются, путь выводится в формате Microsoft (что позволяет легко копировать / вставлять в другие программы). Gow неинвазивен (прост в установке и удалении), поэтому я настоятельно рекомендую вам протестировать его.
Это дублирует другой ответ и не добавляет новый контент. Пожалуйста, не публикуйте ответ, если у вас нет чего-то нового.
DavidPostill
@DavidPostill: Это быстрое решение для пользователей "TL; DR" (таких как я)
vladkras
Это не оправдание для добавления ответа, который не вносит ничего нового. В любом случае принятый ответ всегда будет первым, поэтому он будет прочитан раньше вашего.
DavidPostill
@DavidPostill, не возражайте, но принятый ответ содержит несколько чрезмерных и необъяснимых ключей /B, /Rи /COP не спрашивал о чем, в то время как мой ответ дает точный эквивалент
vladkras
/b, Чтобы сделать dirвывод такой же , как на lsвыходе. Если вы проверите это, вы увидите разницу. Так что это не точный эквивалент.
ДэвидПостилл
2
Я написал альтернативу grep для Windows с использованием кода Hybrid Batch / JScript. Я написал это потому, что получить экранирующие символы прямо в grep-порте GNU Win32 было очень трудно. Эта версия работает так же, как если бы вы хотели, чтобы версия GNU работала в Windows:
Программа с несколькими заменителями была подготовлена так, что многие функции могут быть выполнены с использованием параметров командной строки. Использование командной строки видно ниже:
Вы все еще можете использовать свои знакомые grepи другие команды Linux, загрузив этот инструмент UnxUtils и добавив его местоположение в PATHпеременную среды
Ответы:
Findstr звучит как то, что вы хотите. Я использую его все время как приблизительный эквивалент grep на платформе Windows.
Еще один пример с трубами:
источник
findstr
том, что шаблон регулярных выражений может не содержать альтернатив.findstr
по умолчанию? С Windows XP ?Есть несколько возможностей:
grep
. Есть несколько вариантов. Чаще всего упоминаются GNUWin32 , cygwin и unxutils . Менее известными, но в некотором смысле лучше, являются инструменты из служебного инструментария SFUA , которые запускаются в Подсистеме для приложений на основе UNIX, которая поставляется в комплекте с Windows 7 Ultimate Edition и Windows Server 2008 R2. (Для Windows XP, можно загрузить и установить службы для UNIX версии 3.5 .) Этот инструментарий имеет большое количество командной строки TUI инструментов, отmv
иdu
через оболочки Korn и C, чтобыperl
иawk
, Он выпускается в версиях x86-64 и IA64, а также x86-32. Программы работают в собственном POSIX-окружении Windows, а не с DLL-библиотеками эмулятора (такими какcygwin1.dll
), наслоенными поверх Win32. И да, инструментарий естьgrep
, а также около 300 других.grep
команд Win32, которые люди написали и опубликовали. Тим Чаррон, например, имеет встроенную версию модифицированной GNU grep для Win32 . Существуют также PowerGREP , Bare Grep , grepWin , AstroGrep и dnGrep , хотя это все программы с графическим интерфейсом, а не программы TUI.find
иfindstr
.grep
Обратите внимание, что синтаксис отличается от синтаксиса регулярных выражений.источник
Если команды PowerShell разрешены, используйте
или короткий
Помните, что псевдоним
sls
определяется только начиная с PowerShell версии 3.0. Вы можете добавить псевдоним для меньшего ввода:Чтобы запустить команду PowerShell непосредственно из cmd, используйте
источник
В своей ранней редакции вы написали MS-DOS, есть только
FIND
, насколько я знаю. Но это древняя ОС, которая больше не используется.В командной строке Windows NT (например , Win2K и выиграть XP и более поздних, так , например , win7, win10), вы можете использовать
find
иfindstr
если вы загружаете gnuwin32 тогдаgrep
Основные различия заключаются в том, что findstr поддерживает некоторые регулярные выражения . Grep лучше всего поддерживает регулярные выражения.
find /?
иfindstr /?
показывает вам, что делают переключатели.У Gnuwin32 есть «пакеты». Если вы загружаете GnuWin32, я предлагаю пакет coreutils для набора базовых полезных утилит, с которыми вы уже знакомы, но в этом случае grep не является его собственным пакетом.
добавленной
Gp GnuWin32, последний раз, когда я проверял, старый. Grep Cygwin's намного более современный. Также имейте в виду, что многие люди используют виртуальные машины, а не порты Windows команд * nix.
источник
Если вы предпочитаете использовать
grep
вместо UnxUtils версиюfindstr
с одним.exe
файлом , она переносима, и вам не нужно устанавливать ее или использовать что-то вроде Cygwin.источник
.zip
файл.exe
файлов. Единственным небольшим недостатком является то, что версии немного старые.grep
для Windows: gnuwin32.sourceforge.net/packages/grep.htmВы можете попробовать установить Chocolatey в Windows, а затем установить инструмент Gow . Это предоставит вам
grep
на Windows.Gow
стоять за GNU на Windows. Он предоставляет утилиты командной строки Unix в Windows.источник
Использование Bash
Cmd использовать
где b
/b
обозначает список каталогов и файловисточник
/B
,/R
и/C
OP не спрашивал о чем, в то время как мой ответ дает точный эквивалент/b
, Чтобы сделатьdir
вывод такой же , как наls
выходе. Если вы проверите это, вы увидите разницу. Так что это не точный эквивалент.Я написал альтернативу grep для Windows с использованием кода Hybrid Batch / JScript. Я написал это потому, что получить экранирующие символы прямо в grep-порте GNU Win32 было очень трудно. Эта версия работает так же, как если бы вы хотели, чтобы версия GNU работала в Windows:
Вы всегда можете найти последнюю версию на моей странице Gist для этого.
источник
http://www.multireplacer.com
Программа с несколькими заменителями была подготовлена так, что многие функции могут быть выполнены с использованием параметров командной строки. Использование командной строки видно ниже:
источник
Вы все еще можете использовать свои знакомые
grep
и другие команды Linux, загрузив этот инструмент UnxUtils и добавив его местоположение вPATH
переменную средыисточник
2.4.2
но gnuwin32 имеет более позднюю2.5.4
Я бы предложил использовать busybox-w32 , так как он имеет размер всего около 500 КБ и активно поддерживается.
Так что в вашем случае в командной строке это:
Вы можете использовать
doskey
в командной строке запуск командным файлом для создания команды, например:Затем вы можете использовать
ls | grep root
в командной строке.источник
Если вы хотите добавить простейшую
grep
среду Windows, перейдитеc:\windows\system32
и добавьте небольшой пакетный скрипт с помощью этой команды:Теперь вы можете
что действительно страшная смесь дерьма. Поэтому добавьте еще один пакетный скрипт,
ls
как описано в этом посте.Теперь все выглядит немного знакомо
НТН
источник
Это будет быстрый и грязный эквивалент.
источник