Как сделать простой поиск файлов в cmd

131

Я хочу быстро найти файл по его имени или части его имени из командной строки Windows (не Power Shell). Это похоже на открытие проводника и использование поля поиска вверху.

Примечание. dirМожет выполнять поиск на основе строкового шаблона, но не в подкаталогах.

Примечание 2: findstrможет использоваться для поиска токена внутри файлов и имеет флаг рекурсии ; забавно, что более сложную находку можно легко обнаружить ...

Богдан Гаврил МСФТ
источник
Возможный дубликат superuser.com/questions/177234/…
обработка

Ответы:

175

dir /s *foo* поиск в текущей папке и подпапках.

Он находит каталоги, а также файлы.

где / s означает (документация) :

/ s Перечисляет все вхождения указанного имени файла в указанном каталоге и во всех подкаталогах.

Жиль Аркас
источник
У меня еще вопрос, как скопировать найденные документы в другую папку? Большое спасибо
Hong Cheng
@HongCheng Вы можете использовать подстановочный знак с Xcopyпосле проверки вывода с помощью DIRприведенной выше команды, так как используйте то же самое, что и xcopy *foo* c:\Tempдля поиска всех *foo*файлов и копирования их в c:\Tempкаталог
Винод
128
dir /b/s *.txt  

ищет все текстовые файлы в дереве каталогов. Перед использованием просто измените каталог на root, используя

cd/

вы также можете экспортировать список в текстовый файл, используя

dir /b/s *.exe >> filelist.txt

и поиск в рамках использования

type filelist.txt | find /n "filename"

РЕДАКТИРОВАТЬ 1: Хотя эта команда dir работает со старых дней dos, но Win7 добавил что-то новое под названием Where

where /r c:\Windows *.exe *.dll

будет искать exe и dll на диске c: \ Windows, как предлагает @SPottuit, вы также можете скопировать вывод в буфер обмена с помощью

where /r c:\Windows *.exe |clip

просто подождите, пока не появится приглашение, и до тех пор ничего не копируйте.

РЕДАКТИРОВАТЬ 2: если вы выполняете рекурсивный поиск, и вывод большой, который вы всегда можете использовать moreдля включения разбиения -- More --по страницам , он будет отображаться внизу и будет прокручиваться на следующую страницу при нажатии SPACEили перемещается по строке при нажатииENTER

where /r c:\Windows *.exe |more

Для получения дополнительной помощи попробуйте

where/?
Винод Шривастав
источник
5
Вы также можете экспортировать список в буфер обмена, заменив его >> filelist.txtна | clip. Подробнее об использовании | клип .
Sjoerd Pottuit 01
6
При добавлении /bпосле dirнего возвращается только имя файла или путь к файлу (при поиске в нескольких папках) ( b - формат) и никаких сведений о файле и папке. Добавляя /sза dirв с UB-каталоги также будут найдены. Подробнее о команде dir .
Sjoerd Pottuit 01
Не знаю, почему это не принятый ответ. Содержит все, что есть, и многое другое. Спасибо, что разместили это. Хотел бы я проголосовать больше одного раза!
Аврохом Исроэль
1
можно было бы ожидать, что только cd \ или cd \ перейдут в корневой каталог, но похоже, что cd / также выполняет свою работу в Windows 10 - не уверен, с какой версией DOS / Windows это правда,
Джордж Бирбилис,
1
@ Винод Сривастав, очень мило. Объяснены все возможные сценарии.
Кланто Агунтук,
2

dir *.txt /s /p даст более подробную информацию.

Муллаи Натан
источник
1
Какие подробности? /pбудет пауза, и это то же самое, что иwhere /r c:\Windows *.exe /T |more
Винод Сривастав
0

Проблема с DIR в том, что он возвращает неправильные ответы. Если вы ищете DOC в папке, используя DIR *.DOCего, вы также получите DOCX . Поиск *.HTMтакже даст HTML и так далее ...

Хоббе Лундаль
источник
2
Вот почему для этой цели следует использовать WHERE asWhere /R c:\ *.DOC *.HTM
Винод Шривастав
Vinod Srivastav. Я попробовал это сейчас, и ничего себе, эта работа творит чудеса. :) Я буду реализовывать это в своих партиях.
Hobbe Lundahl
0

Вы можете искать в Windows с помощью DOS и GUI проводника.

DOS:

1) DIR

2) ICACLS (ищет файлы и папки, чтобы установить для них ACL)

3) cacls ............................................... ...

2) пример

icacls c: * ntoskrnl *. * / grant system: (f) / c / t, затем используйте PMON из sysinternals, чтобы отслеживать, к каким папкам отказано в доступе. Результат содержит

путь доступа содержит ваш диск

имя процесса - explorer.exe

это были фильтры, которые вы должны применить

Али
источник