Как мне (рекурсивно) искать ВСЕ содержимое файла в Windows 7? - PullRequest
25 голосов
/ 16 февраля 2012

Как (рекурсивно) выполнить поиск всего содержимого файла в Windows 7?Я использую команду content:xxx в поле Search settings в проводнике Windows для поиска xxx в этом примере.Это не работает:

В качестве примера того, как этот поиск не работает, я вижу файл org.eclipse.wst.common.component с текстом, который я ищу, и Windows 7 не возвращает его в результатах.Я предполагаю, что это только поиск известных текстовых типов файлов. Как я могу заставить его искать все файлы ?Мне нужно найти все, что я ищу.

PS Если есть решение на основе DOS, я также приму это.Возможно, можно создать командный файл с использованием dir /s /b и findstr.

РЕДАКТИРОВАТЬ: отметил мою потребность в рекурсивном поиске.

Ответы [ 6 ]

37 голосов
/ 18 марта 2014

"user3245549" прав:

Все вышеприведенные ответы с "for loops" и вложенными файлами bat являются mumbo jumbo. Все, что вам нужно, это просто использовать "findstr" - пример:

C:\temp> findstr /S /C:"/work" * | more   <-- this will find the string "/work" in any file

или

C:\temp> findstr /S /C:"/work" "*.*" | more 

или

C:\temp> findstr /S /C:"/work" * > results.txt

или

C:\temp> findstr /S /C:"/work" "*.*" > results.txt

ПРИМЕЧАНИЕ. Вы можете не указывать «двойные кавычки» вокруг звездочек - я просто поместил их, потому что редактор в Stackoverflow удалял звездочки по обе стороны периода. ВНИМАНИЕ ТАКЖЕ: Насколько я знаю, вам все еще нужны кавычки вокруг «строкового текста», который вы ищете.

32 голосов
/ 17 июня 2014

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

8 голосов
/ 28 января 2014

Используйте команду findstr из окна командной строки.

/ s даст вам рекурсивный поиск

/ я игнорирую регистр

4 голосов
/ 16 февраля 2012

Вот мое трехфайловое решение для DOS, но я все еще ищу подходящее решение для Windows 7, если у кого-нибудь оно есть:

1. search.bat

@ECHO off
FOR /r %%a IN (*.*) DO CALL process.bat %%a

Поиск всех файлов рекурсивно и выполнение process.bat для каждого из них.

2. process.bat

@ECHO Off
ECHO "%1" >> output.txt
TYPE "%1" | FINDSTR /i "search_string_here" >> output.txt

Печатает имя каждого файла в кавычках, потому что некоторые файлы нарушают код пакетного файла без, затем находит строку поиска search_string_here и печатает всю строку, в которой находится строка поиска.

3. output.txt (пример вывода)

Содержит выходные данные, отформатированные следующим образом: поиск search_string_here в моем project_name проекте Java, хранящемся в D:\project_name\, с отображением всех найденных файлов, а также результатов, если таковые имеются:

"D:\project_name\.classpath" 
"D:\project_name\.project" 
    <name>search_string_here</name>
"D:\project_name\content_search_all_files.bat" 
"D:\project_name\output.txt" 
    <name>search_string_here</name>
"D:\project_name\pom.xml" 
...

Вы можете видеть, что search_string_here было найдено, полная строка <name>search_string_here</name>, в файле D:\project_name\.project ... среди других результатов.

Опять же, я все еще ищу подходящее решение для Windows 7, если у кого-то оно есть.

Предупреждение: ошибка «слишком длинная строка»; FINDSTR может содержать ошибки:

Очевидно, FINDSTR

Очевидно, что «слишком длинная строка» является универсальным сообщением для ряда разные ошибки. У FINDSTR есть некоторые проблемы. Некоторое время назад я сказал, что FINDSTR был незначительно полезен. После сегодняшнего дня я бы сказал, что это еще меньше полезнее, чем я думал тогда. - http://blog.mischel.com/2008/10/14/copying-large-files-on-windows/

3 голосов
/ 21 февраля 2013

Это можно сделать через командную строку, хотя синтаксис довольно многословный

for /r %a in (\*.*) do find "search_text" %a

Теперь это работает в Windows 7 (лишняя точка удалена)

0 голосов
/ 16 февраля 2012

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

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

Если вы ищете несколько связанных файлов, таких как все файлы за определенный месяц или все документы, которыеВы написали, вы можете использовать заголовки над списком файлов для фильтрации, стека или группировки ваших файлов.Организация ваших файлов одним из этих способов облегчает их поиск и выбор.Для получения дополнительной информации см. Раздел Использование заголовков списка файлов. Здесь

Если вам нужно создать поиск с несколькими фильтрами или когда вы ищете файлы из нескольких папок одновременно, создайтепоиск в папке поиска.Когда вы закончите, вы можете сохранить критерии поиска и использовать его в будущем, чтобы снова найти тот же набор файлов одним щелчком мыши.Для получения дополнительной информации см. Создание расширенного поиска в папке поиска. Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...