Как искать внутри файлов на Windows 7?


253

В Windows XP мы можем искать файлы, которые содержат определенное ключевое слово (внутри всех типов файлов).

Windows 7 может искать в файлах ключевое слово, но только текстовые файлы. ( *.doc, *.txt, *.inf, ...), а не ( *.conf, *.dat, *.*, ...).

Фильтры поиска Microsoft не содержат никаких фильтров, которые я могу использовать для этого.

Как это возможно?


2
Большинство ответов ниже бесполезны и не относятся к заданному вопросу. Проблема, которую ОП четко объяснил, заключалась в том, что Windows Vista + не выполняет поиск содержимого определенных типов файлов (чтение расширений файлов ). Как они четко сказали, некоторые работают, а другие нет. Например, он будет найти .txtфайл , который содержит слово, но не .cpp, .cfg, .phpили даже .iniфайлы , даже если они все обычные текстовые (и .iniфайлы даже стандарт для Windows!) Эта проблема все еще существует , и самое простое решение , как представляется, это ответить .
Synetech

1
MS Visual Studio имеет отличную функцию «найти в файлах». Без настройки - просто укажите критерии для более или менее мгновенных результатов. Почему это не в проводнике Windows, как «Расширенный» вариант, мне не подходит.
omatai

Ответы:


131

Чтобы перейти к параметрам индексирования :

Пуск -> Панель управления -> Параметры индексирования

См. Изменение параметров расширенной индексации для получения дополнительной информации.

Если вы нажмете кнопку « Дополнительно» в разделе « Параметры индексирования» и перейдете на вкладку « Типы файлов », вы получите список типов файлов и способы их индексации. Для типов файлов, которые вы хотите, вы можете указать, что вы хотите индексировать содержимое файла, а не только свойства файла.

Или вы можете просто выполнить обычный поиск, и после того, как поиск будет завершен, вы можете нажать кнопку «Содержимое файла» под полем «Поиск снова в» (которое находится после конца списка результатов поиска, если вы прокрутите до дно).

Исходя из этой страницы , опция «Содержимое файла» не всегда будет отображаться - только если искомая папка не помечена для индексации содержимого файла; в этом случае содержимое файла предположительно ищется автоматически, без необходимости явно указывать эту опцию.


19
Или, может быть, с помощью команды FIND вместо.

4
@Synetech inc. - вы можете передать результаты другой команды find, чтобы не было причин, по которым вы не могли запустить ее на всем жестком диске (возможно, с помощью attribпоиска)
Warren

8
@Synetechinc. Вы можете сказать:find "word" *
Оскар Медерос

5
@nikhil: К сожалению, вы не упоминаете, как добраться до параметров индексации, а также не ссылаетесь на страницу, на которую вы ссылаетесь.
Стив

8
-1, поскольку он не выполняет поиск в неиндексированных местоположениях, даже если выбран этот параметр. @ Ответ Шимми Шона ниже делает.
HaydnWVN

113

У меня всегда была лучшая производительность при поиске внутри файлов с помощью инструмента GREP. Я фанат АстроГреп .


12
AstroGrep худой и подлый. 80k, молниеносно, и поиск сетевых расположений. Спасибо за советы по этому инструменту.
Шон О

1
Ух ты!! это хорошо!
Роднико

4
Также плагин здесь для агента Ransack. Встроенная оболочка, небольшая и быстрая, также поддерживает регулярные выражения.
ингридиент_15939

1
Отличный инструмент! Спасибо! Поиск Windows в файлах - это часть ... ну, вы знаете. Этот инструмент очень быстрый на моем диске SAS и работает безупречно. Найдено более 200 файлов, в которых окна поиска по содержимому нашли только 12 и не отображают то, что я искал, но я знал, что я ищу, и я был уверен в каталоге. Должен ли я сказать больше? Еще раз спасибо!
Г.Т.Доров

1
+1 для AstroGREP и +1 для AgentRansack ... +1 также для инструмента командной строки Cygwin grep ...
ZEE

84

Полагаю, вы также можете просто ввести «content: blahblah» в поле фильтра поиска в верхнем правом углу Windows Explorer. Это работает по крайней мере для текстовых файлов и документов Office. Это также работает для исходных файлов.


19
Кажется, не работает
ThomasMcLeod

17
Я обнаружил, что он также локализован, например, на немецком языкеinhalt:
mjustin

3
'contents: $$$', где $$$ - это контент, который я ищу, работает для меня в Windows 7
HaydnWVN

4
Не работает в Windows 7 32 бит. Я скопировал и вставил из файла в каталог, в котором выполняется поиск, и он сказал, что строка не найдена.
weberc2

3
Кажется, работает для HTML, JS, CSS, XML, SQL, но, к сожалению, не PHP.
kcdwayne

56

Вы можете играть с findstr .

findstr /s /m searchstring *.*

Описание вариантов:

/S         Searches for matching files in the current directory and all subdirectories.
/M         Prints only the filename if a file contains a match.

@ Synetech Почему бы и нет? Это очень легко использовать, например findstr "todo" *.txt.
Мафу

/ i для нечувствительности к регистру также потенциально очень ценно. FINDSTR - единственный, единственный не сторонний способ поиска ЧАСТИЧНЫХ строк. Если вы ищете goog, он будет совпадать с google.com, 123779goog44682 или 123google.com55, и, насколько мне известно, ни в коем случае папка Windows / окно поиска Explorer или Control-F не ​​могут выполнить эту очень, очень простую, логическую задачу. Говоря о десятилетиях работы в области компьютерных разработок на высоком уровне C и Assembler, смейтесь или высмеивайте все, что вы хотите, но я заявляю вам: глупые дизайнеры Microsoft не понимают компьютеры.
MicrosoftShouldBeKickedInNuts


14

Агент Ransack всегда стоит посмотреть. Это бесплатно, быстро, хорошая репутация и не использует индексацию.


Примечание. Я использовал AR, но существуют некоторые лицензионные ограничения в отношении использования в личных и коммерческих целях. В целом, несмотря на то, что инструмент работает очень хорошо и дает тот вид фокуса поиска файлов, который нужен.
Джон М

9

В проводнике Windows, меню Сервис -> Параметры папки:

Нажмите на вкладку поиска и здесь, первый вариант: что искать , выбрать для поиска неиндексированных файлов внутри файла.


Это, казалось, игнорировало эту опцию, потому что мой тип файла был настроен в параметрах индекса, чтобы не обрабатываться как текстовый файл. .propertiesФайл не получает поиск текста по умолчанию.
Ричард Ле Мезурье

1
Это был единственный ответ на этой странице, который работал для меня. Мне также пришлось проверить опцию «Не использовать индекс при поиске ...».
Фурманатор

Не использовать индексатор, поэтому это не решает проблему.
Synetech

8

Windows 7 по-прежнему имеет возможность искать строки внутри файлов везде (а не в проиндексированных местах).

В проводнике Windows перейдите в меню «Инструменты / Параметры папки» и выберите «Всегда искать имена файлов и их содержимое».

Возможно, типы файлов по-прежнему должны быть правильно настроены в «Дополнительные параметры параметров индексирования».


2
+1 для параметров индексации. Это ОЧЕНЬ ВАЖНО, потому что они определяют, что означает Windows под «поиском» файла. Например, у меня есть .propertiesфайл сценария сборки ANT, который Windows не будет искать, потому что он не настроен для обработки его как текстового файла.
Ричард Ле Мезурье

Странно, что параметры индексации влияют на неиндексированные поиски.
Джиггунджер

1
Да, проблема заключается в типах, поэтому этот ответ был бы лучше, если бы он не закончился непосредственно перед упоминанием исправления.
Synetech

В Windows 10 этот параметр находится в меню ВидПараметрыИзменить папку и параметры поиска → вкладка Поиск .
Питер Мортенсен

6

Ответ Шона Секстона дал мне то, что я искал (поместив «content:» в текстовое поле поиска). Но я думаю, что следующее графическое объяснение может помочь другим.

Эквивалент этого поиска в XP Search Companion (собака):

XP Search Companion

это в Windows 7:

Windows 7 Search


2
У меня не сработало (с * .srt (файлы текстовых субтитров)).
Аарон Тома

«content:» игнорируется ... просто сделайте тестовый поиск одной и той же строки с и без «content:» и проверьте его ...
ZEE

1
@JeffRoe, я не могу заставить Windows искать внутри .sqlфайлов. Вы действительно получили ожидаемые результаты? Я не могу не заметить, что вы обрезали скриншот чуть выше результатов поиска ...
Synetech

@Synetech: Да, я определенно получил ожидаемые результаты. Извините, я не уверен, что будет отличаться в вашей системе, что помешает ее работе.
Джефф Роу

3

Вы пытались найти в интернете правильный iFilter (например, http://www.ifilter.org/ )?

Если у вас есть подходящий iFilter, Windows должна иметь возможность искать и индексировать его содержимое.


1
мне нужен "iFilter" для каждого расширения файла?

Скорее всего, да - поскольку каждое расширение файла предполагает, что содержимое файла будет определенным для конкретного расширения.
Рифферте

Кроме того, просмотрите эти две ссылки - они содержат много контента, который должен вам помочь: microsoft.com/windows/products/winfamily/desktopsearch/… gallery.live.com/default.aspx?pl=6
rifferte

А что если я не использую индексатор, то что?
Synetech

3

В Windows XP вы можете добавить дополнительные (текстовые) типы файлов для поиска через реестр:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.dita\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

Я не уверен, работает ли это с Windows 7 также.


1
Похоже, в Windows 7 это работает. К сожалению, вам нужно создать файловую ассоциацию для каждого расширения файла, которое вы хотите найти внутри, но, по крайней мере, это работает и не требует изменения реестра уровня администратора.
Synetech

2
Я не понимаю этот ответ, что опубликовал пример добавления типа файла .dita к поиску Windows?
Герман Зуботрот

1
Да, это для расширения .dita.
BennyInc

2

Вы можете попробовать использовать версию Cygwin или grep для Windows, выполнить поиск команд * nix и выполнить поиск с помощью утилиты grep .

Из руководства :

grep options pattern input_file_names

Используя пакет Google gnuwin32, существует версия grep для Windows.


1

Windows 7 SP1 игнорирует содержимое: и содержимое: для меня сейчас, и похоже, что механизм изменился: теперь вы вводите то, что хотите, и как только начинается поиск, появляется строка внизу с надписью «Поиск снова в :»Библиотеки, Компьютер, изготовленный на заказ, Firefox, и самое главное, содержимого файла . Щелкните по нему, и он возобновит поиск в файлах, даже если папка не проиндексирована.


3
на моей машине File Contentsне предоставляется в качестве опции
Ричард Ле Мезурье

Вы используете Win8? Там он заменен тем, где вы должны нажать на вкладку поиска, открыть «Дополнительные параметры», а затем «Содержимое файла».
SilverbackNet

1
Win 7 Home Premium 64bit SP1 ... странно, его там нет; прокомментировал, чтобы предупредить других сбитых с толку читателей (потому что эта проблема меня очень взволновала и чуть не привела к БОЛЬШОЙ ошибке при отправке паролей клиенту в файле, который не сканировался как текст)
Ричард Ле Мезурье

1
Как ясно объяснил ОП, это НЕ работает для определенных типов файлов. ◔_◔
Synetech
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.