Эквивалент Windows для команды поиска Unix для поиска файлов нескольких типов

Хотя установка cygwin в Windows дает большую часть команды unix, мне все же было интересно, как искать несколько типов файлов в одной команде с помощью команды Windows "find".
то есть: find . -name *.cpp -o -name *.h -o -name *.java

Приведенная выше команда дает мне список всех cpp, h и java, что будет эквивалентом при использовании поиска Windows?


person Soumen    schedule 08.06.2011    source источник


Ответы (2)


Это найдет все файлы с заданными расширениями в текущем рабочем каталоге и во всех подкаталогах:

dir *.cpp *.h *.java /b/s

См. https://technet.microsoft.com/en-us/library/cc755121.aspx для получения дополнительной информации об использовании dir.

person JAB    schedule 08.06.2011
comment
что это должно делать, так это искать образец текста во всех указанных файлах. Я не хочу этого делать, я хочу, чтобы он перечислял все файлы в текущем и подкаталоге с расширением файла cpp, h или java. - person Soumen; 10.06.2011
comment
также эта команда почему-то не работает в windows7 .. или, может быть, я ошибаюсь. Также я обнаружил, что tree может быть лучшей альтернативой, чем find в Windows. - person Soumen; 10.06.2011
comment
@Soumen: Тогда говорите не "команда поиска Windows", а "эквивалент Windows поисковой команде unix". Во всяком случае, обновил свой ответ чем-то, что должно быть ближе к тому, что вы хотите. (Если я не ошибаюсь, tree не позволяет ограничивать результаты только файлами с определенными расширениями.) - person JAB; 10.06.2011
comment
спасибо, это то, что я искал. И вы правы насчет названия вопроса. - person Soumen; 13.06.2011
comment
древовидная документация microsoft. ru / resources / documentation / windows / xp / all / proddocs / - person John Zumbrum; 07.01.2014
comment
@JohnZ tree по-прежнему не позволяет вам ограничивать результаты файлами с определенными расширениями (хотя вы, конечно, можете проанализировать вывод tree и удалить эти строки с файлами, которые не соответствуют определенному шаблону или регулярному выражению, но для этого потребуется дополнительный шаг в процессе). - person JAB; 07.01.2014
comment
Это больше похоже на locate, чем на _2 _... Он даже не мог найти файл, который я искал, пока я не нашел его сам! - person Geoffroy; 08.07.2014
comment
И если вы хотите подражать очень распространенной идиоме команд find . -name \*.cpp | wc -l * nix, вы можете использовать dir *.cpp /b/s | find /c /v "". Подробности см. В сообщении Рэймонда Чена. - person ddevienne; 21.04.2015
comment
Как сузить это до subdir? find . -name "*Test.php" src - person ioleo; 29.01.2016
comment
@loostro В вашем конкретном случае это будет dir src\*Test.php /b/s, как указано в документации Microsoft. - person JAB; 29.01.2016
comment
dir *.exe /b/s дает мне dir : Second path fragment must not be a drive or UNC name. Windows 10 версии 1903. - person John Freeman; 06.07.2019
comment
@JohnFreeman этот синтаксис должен быть действителен на основе недавних документов, поэтому я посмотрю. - person JAB; 06.07.2019
comment
@Soumen На компьютере с Windows 10 x64 1903, это выполняет текстовый поиск, как отмечали другие комментарии ... поэтому я не понимаю, почему в других комментариях здесь говорится, что это работает, теперь, когда вы обновили заголовок вопроса. Я неправильно понимаю, чего вы на самом деле хотели? Я пришел сюда в поисках способа найти файлы с расширением .abc, а не файлы с .abc в имени: S - person Kenny83; 12.07.2019

findstr / p / s / i.

Вышеупомянутая команда ищет данный текст в текущих каталогах и подкаталогах. / n также напечатает номера строк.

person Sreedhar GS    schedule 10.09.2014
comment
Это похоже на grep, а не на find. - person Ben Voigt; 29.10.2014