Итак, вот ситуация. В настоящее время у меня есть почтовый сервер для моей небольшой некоммерческой компании. Мой почтовый сервер (Merak Mail Server) хранит журналы в файлах .log и почту в виде файлов .tmp. По сути, это просто текстовые файлы, которые хранятся на сервере.
Проблема в том, что когда я помещаю текст в поле «Содержит текст» в проводнике Windows, он всегда пропускает файлы и сообщает мне, что результаты не возвращаются. Затем, когда я ищу файлы один за другим (в лучшем случае болезненно), я нахожу нужные мне файлы.
Я недостаточно хорошо разбираюсь в функции поиска, или, может быть, я неправильно индексирую. Мне действительно все равно, что мне нужно использовать для поиска файлов, меня устраивает даже стороннее приложение, я просто хочу ввести адрес электронной почты в поле и выполнить поиск во всех моих файлах журналов или файлах электронной почты и найти какой я ищу. Это может быть Windows Search или что-то еще, если я найду способ выполнить свою работу, я буду счастлив. Платные решения тоже подходят.
Спасибо всем заранее.
Я бы сказал дать WinGrep выстрел.
Если они все в одном каталоге, я вижу, что вам поможет двухэтапный процесс.
Шаг 1. Командная строка
Откройте оболочку CMD и перейдите в каталог, который вы ищете. Затем введите команду find:
F:\directory> find "user.name@org.org" *
Затем он будет искать во всех файлах этого каталога искомую строку. Когда он найдет его, он даст вам имя файла, например:
---------- MSGTRK20090603-1.LOG 2009-06-03T09:11:37.486Z,192.168
Что скажет вам, в каком файле искать внутри.
Шаг 2: поиск внутри файла
Этот шаг вам уже известен. Первый шаг - это просто сузить область поиска.
Используйте findstr в командной строке!
C:\>findstr /?
Searches for strings in files.
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B Matches pattern if at the beginning of a line.
/E Matches pattern if at the end of a line.
/L Uses search strings literally.
/R Uses search strings as regular expressions.
/S Searches for matching files in the current directory and all
subdirectories.
/M Prints only the filename if a file contains a match.
etc.
Example:
C:\>findstr /s /m my.name@domain.com c:\temp\*.txt c:\temp\*.log
c:\temp\t\t.log
c:\temp\t\t.txt
c:\temp\t\tt.log
c:\temp\tt.txt
Redirect to a file and open in notepad:
C:\>findstr /s /m my.name@domain.com c:\temp\*.txt c:\temp\*.log > c:\temp\myemail.txt & notepad c:\temp\myemail.txt
Вы можете сделать это одним из двух способов (я уверен, что их больше, но вот что я бы сделал)
Установите Microsoft Desktop Search, вы можете сделать это на сервере или рабочей станции и проиндексировать файлы. Он должен видеть, что это текстовые файлы, и индексировать их содержимое. Это будет более быстрый из двух способов. Это, кстати, бесплатно.
Используйте расширенный текстовый редактор, такой как Notepad ++ или Textpad, и используйте параметр «файл в файлах», который будет искать все файлы в каталоге. Но это займет больше времени, если вам нужно будет запустить поиск. Notepad ++ является бесплатным, Textpad имеет небольшую стоимость, но его можно попробовать.
Если это то, что вам нужно делать часто, я бы выбрал 1. Если это случается нечасто, попробуйте 2 и посмотрите, сработает ли это для вас.
Мне нравится UltraEdit за это. Вы можете указать ему найти все файлы в каталоге (или ограничить его определенными типами файлов или любым другим подстановочным знаком) для указанной вами строки. Если он находит ваш текст в нескольких файлах или несколько раз в файле, он дает вам список всех найденных экземпляров, и щелчок по одному из них приведет вас к этому файлу / местоположению.
Затем используйте powershell:
select-string -path c: \ mylogfiledir * .log -pattern "моя строка"
Обратите внимание, что в powershell v2 вы также можете использовать переключатель -context, чтобы получить строки выше и ниже строки, где было найдено совпадение.
Ты можешь использовать подтверждать «Программа типа grep специально для больших деревьев исходного кода». Ack похож на grep, но написан на Perl (отлично работает в Windows). Вот причины, по которым он предположительно лучше, чем grep:
Я никогда не ищу / не находю окна из-за таких вещей. Обычно я выполняю поиск через старую добрую командную строку. Результаты на 99% быстрее и точнее, чем в графическом интерфейсе поиска / поиска.
c:
cd \
dir /s *.log *.tmp
Вы даже можете передать результаты в найти команда если вы хотите искать в результатах.
Не забывайте, что Logparser также может быть хорошей утилитой для синтаксического анализа текста / поиска. Для форматов 'TEXTWORD и TEXTLINE input' и 'CSV and TSV input' стоит запустить logparser -i: INPUTFORMATYOUWISHTOKNOWMOREABOUT -h 'help'. Примеры также есть в файлах «помощи».
я использую Агент Рэнсак и он отлично работает. Он также присоединяется к контекстному меню, поэтому вы можете щелкнуть папку правой кнопкой мыши и сказать Agent Ransack, и он будет искать там. О, и самое лучшее, это бесплатно.
Я использую это для поиска внутри текстовых файлов, а также временных папок, в которых обычный поиск из Windows не выполняет поиск.
Надеюсь, поможет.
я использую PsPad (бесплатный расширенный текстовый редактор) для аналогичного поиска в журнале. Если вы пойдете в Поиск -> Поиск / замена в файлах вы можете искать любую текстовую строку в наборе файлов в определенном каталоге.
Если вы хотите использовать проводник Windows:
Нажмите "Изменить настройки". Изменить поведение поиска файлов и папок. Убедитесь, что выбран вариант "расширенный".
Щелкните дополнительные параметры. Убедитесь, что выбран параметр «Скрытые файлы и папки»
Затем "Инструменты" Параметры папки "Просмотр" Установите флажок "показать скрытые файлы и папки" Снять отметку "скрыть расширения для известных типов файлов" Снять отметку "скрыть защищенные системные файлы"
Я выполняю поиск файла журнала (и других текстовых файлов) с копией GNU grep (для Windows), которая была загружена и помещена в каталог файлов, которые я хочу просканировать (или поместить ее в свой путь)
Затем в командной строке введите
grep -H email@example.org * .tmp >> output.txt
Это даст вам выходной файл с именами файлов (и строкой с адресом электронной почты).
Я бы сказал, что это работа для WildReplace . WildReplace абсолютно бесплатен и хорош только для поиска в текстовых файлах, таких как файлы .xml.
Wildreplace делает все, что делают grepWin и WinGrep, и, на мой взгляд, лучше отображает результаты.
Windows не выполняет поиск текста во всех файлах. См. Статью http://support.microsoft.com/kb/309173. Можно добавить записи в реестр, которые будут добавлять типы файлов, которые будут найдены при таком стиле поиска.
Поиск Windows по умолчанию ищет имена файлов в неиндексированных местах и ищет имена файлов и его содержимое в проиндексированных местах. Но вы можете изменить это, перейдя в Инструменты-> Параметры папки-> вкладка Поиск.
Если вы не можете найти расширение файла в списке индексирования, вы можете добавить его с помощью дополнительных параметров индексирования:
Удивительно, что об этом никто не говорил.