Pesquisa dentro de arquivos de texto

2

Então aqui está a situação. Atualmente, executo um servidor de e-mail para minha pequena empresa sem fins lucrativos. Meu servidor de e-mail (Merak Mail Server) mantém logs em arquivos .log e mail como arquivos .tmp. Essencialmente, são apenas arquivos de texto que são mantidos no servidor.

O problema é que quando eu coloco texto no campo "Contendo texto" no Windows Explorer, ele sempre erra os arquivos e diz que nenhum resultado é retornado. Então, quando eu procuro os arquivos um por um (doloroso na melhor das hipóteses), eu encontro os arquivos que eu preciso.

Eu não entendo o recurso de pesquisa bem o suficiente, ou talvez eu tenha indexado errado. Eu realmente não me importo com o que eu preciso usar para pesquisar os arquivos, até mesmo um aplicativo de terceiros é bom para mim, eu só quero digitar um endereço de e-mail em uma caixa e pesquisar todos os meus arquivos de log ou arquivos de e-mail e encontrar qual deles eu estou procurando. Pode ser o Windows Search ou qualquer outra coisa, desde que eu possa encontrar uma maneira de fazer o trabalho, serei feliz. As soluções de pagamento também são boas.

Obrigado a todos antecipadamente.

    
por Matt 18.06.2009 / 18:18

16 respostas

7

Eu diria que WinGrep é uma chance.

    
por 18.06.2009 / 18:21
3

Se eles estiverem todos em um único diretório, posso ver um processo de duas etapas ajudando você.

Etapa 1: linha de comando

Abra um shell do CMD e vá para o diretório que você está procurando. Em seguida, emita o comando find:

F:\directory> find "[email protected]" *

Em seguida, ele pesquisará todos os arquivos desse diretório pela string que você está procurando. Quando encontrar um, ele te dará o nome do arquivo, assim:

---------- MSGTRK20090603-1.LOG
2009-06-03T09:11:37.486Z,192.168

O que informará qual arquivo deve ser pesquisado.

Passo 2: Pesquisando dentro do arquivo

Este passo você já conhece. O primeiro passo é apenas limitar o seu escopo de pesquisa.

    
por 18.06.2009 / 18:41
3

Use findstr no prompt de comando!

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 [email protected] 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 [email protected] c:\temp\*.txt c:\temp\*.log > c:\temp\myemail.txt & notepad c:\temp\myemail.txt 
    
por 18.03.2010 / 16:16
2

Você pode fazer isso de duas maneiras (bem, tenho certeza de que há mais, mas aqui está o que eu faria)

  1. Instale o Microsoft Desktop Search, você pode fazer isso no servidor ou em uma estação de trabalho e fazer com que ele indexe os arquivos. Deve ser capaz de ver que são arquivos de texto e indexar o conteúdo. Este será o mais rápido dos dois caminhos. Isso é grátis btw.

  2. Use um editor de texto avançado como o Notepad ++ ou o Textpad e use a opção de arquivo em arquivos que pesquisará todos os arquivos no diretório. Mas isso levará mais tempo quando você precisar executar a pesquisa. O Notepad ++ é gratuito, o Textpad tem um custo pequeno, mas é livre para experimentar.

Se isso é algo que você precisa fazer com freqüência, eu usaria 1. Se não for freqüente de vez em quando, experimente 2 e veja se funciona para você.

    
por 18.06.2009 / 18:24
2

Eu gosto do UltraEdit para isso. Você pode avisá-lo para pesquisar todos os arquivos em um diretório (ou limitá-lo a certos tipos de arquivos ou a qualquer outro curinga) para uma sequência que você especificar. Se encontrar seu texto em vários arquivos ou várias vezes em um arquivo, ele fornecerá uma lista de todas as ocorrências encontradas e, ao clicar em uma, você será direcionado para esse arquivo / local.

    
por 18.06.2009 / 18:45
2

Use o powershell então:

select-string -path c: \ mylogfiledir * .log -pattern "minha string"

Note que no powershell v2 você também pode usar a opção -context para obter as linhas acima e abaixo da linha onde a correspondência foi encontrada

    
por 18.06.2009 / 19:12
1

Você pode usar ack 'Um programa parecido com o grep, especificamente para árvores de grande porte. Ack é como o grep, mas escrito em perl (funciona bem no Windows). Estas são as razões pelas quais é supostamente melhor que o grep:

  1. É incrivelmente rápido porque pesquisa apenas as coisas que você deseja pesquisar.
  2. o ack é puro Perl, por isso é executado no Windows muito bem.
  3. A versão autônoma não usa módulos não padrão, portanto você pode colocá-la em seu ~ / bin sem medo.
  4. Procura recursivamente por diretórios por padrão, ignorando os diretórios .svn, CVS e outros diretórios VCS.       * O que você prefere digitar?         $ grep padrão $ (find. -type f | grep -v '.svn')         padrão de $ ack
  5. ack ignora a maior parte da porcaria que você não quer procurar       * Diretórios VCS       * blib, o diretório de construção do Perl       * arquivos de backup como foo ~ e # foo #       * arquivos binários, core dumps, etc
  6. Ignorar diretórios .svn significa que ack é mais rápido que o grep para pesquisar por árvores.
  7. Permite especificar tipos de arquivos para pesquisa, como em --perl ou --nohtml.       * O que você prefere digitar?         $ grep pattern $ (find. -name ' .pl' -ou -name ' .pm' -ou -name '* .pod' | grep -v .svn)         $ ack - padrão de perl   Observe que o --perl do ack também verifica as linhas shebang dos arquivos sem sufixos, que o comando find não irá.
  8. Recursos de filtragem de arquivos utilizáveis sem pesquisar com ack -f. Isso permite criar listas de arquivos de um determinado tipo.   $ ack -f --perl > arquivos all-perl
  9. Destaque de cor dos resultados da pesquisa.
  10. Usa expressões regulares Perl reais, não um subconjunto GNU.
  11. Permite que você especifique a saída usando as variáveis especiais do Perl       * Exemplo: ack '(Mr | Mr? S). (Smith | Jones) '--output =' $ & '
  12. Muitas opções de linha de comando são as mesmas do GNU grep:   -w pesquisa somente por palavra   -c mostra contagens por arquivo de correspondências   -l dá o nome do arquivo em vez de linhas correspondentes   etc.
  13. O nome do comando tem 25% menos caracteres para digitar! Economize dias de tempo livre! Heck, é 50% mais curto comparado ao grep -r.
por 18.06.2009 / 18:48
1

Eu nunca você o Windows procura / encontrar, por causa de coisas como esta. Eu geralmente acabo fazendo uma pesquisa através de um prompt de comando bom e velho. Os resultados são 99% mais rápidos e precisos do que a GUI Search / Find.

c:
cd \
dir /s *.log *.tmp

Você pode até mesmo canalizar os resultados para o Find comando se você quiser pesquisar nos resultados.

    
por 18.06.2009 / 19:40
1

Não esqueça que o Logparser também pode ser um bom analisador de texto / utilitário de pesquisa. Os formatos 'TEXTWORD e TEXTLINE input' e os formatos 'CSV e TSV input' valem a execução da chamada logparser -i: INPUTFORMATYOUWISHTOKNOWMOREABOUT -h 'help'. Também há exemplos nos arquivos de ajuda.

    
por 29.06.2009 / 18:07
1

Eu uso o Agent Ransack e ele funciona muito bem. Ele também se anexa ao menu do botão direito do mouse para que você possa clicar com o botão direito do mouse na pasta e dizer "Agent Ransack" e ele procurará lá. Ah, e melhor coisa, é de graça.

Eu uso isso para pesquisar arquivos de texto e pastas temporárias que a Pesquisa normal do Windows não pesquisa.

Espero que ajude.

    
por 29.06.2009 / 20:48
0

Eu uso o PsPad (um editor de texto avançado gratuito) para fazer pesquisas de registro semelhantes. Se você for a Pesquisa - > Pesquisar / substituir em arquivos você pode pesquisar qualquer seqüência de texto em um conjunto de arquivos em um diretório específico.

    
por 18.06.2009 / 18:44
0

Se você gostaria de usar o Windows Explorer:

Clique em Alterar preferências Alterar o comportamento de pesquisa de arquivos e pastas Certifique-se de que "avançado" esteja selecionado

Clique em opções mais avançadas Certifique-se de que "arquivos e pastas ocultos" estejam selecionados

Então Ferramentas Opções de Pasta Guia Exibir Marque "mostrar arquivos e pastas ocultos" Desmarque a opção "ocultar as extensões dos tipos de arquivos conhecidos" Desmarque a opção "ocultar arquivos protegidos do sistema operacional"

    
por 18.06.2009 / 20:01
0

Eu faço logfile (e outras pesquisas de arquivos de texto) com uma cópia do GNU grep (para windows) que foi baixada e colocada no diretório dos arquivos que eu quero escanear (ou colocar no seu caminho)

Em seguida, no prompt de comando, digite

grep -H [email protected] * .tmp > > output.txt

Isso lhe dará um arquivo de saída com os nomes dos arquivos (e a linha com o endereço de e-mail).

    
por 18.06.2009 / 20:25
0

Eu diria que este é um trabalho para WildReplace . O WildReplace é totalmente gratuito e é bom apenas para pesquisar arquivos de texto, como arquivos .xml.

O Wildreplace faz tudo o que o grepWin e o WinGrep fazem e exibe os resultados melhor na minha opinião.

    
por 18.03.2010 / 16:41
0

O Windows não pesquisa todos os arquivos em busca de texto. Veja o artigo link . É possível adicionar entradas de registro que serão adicionadas aos tipos de arquivos que esse estilo de pesquisa encontrará.

    
por 12.11.2010 / 20:16
0

A pesquisa do Windows, por padrão, pesquisa nomes de arquivos em locais não indexados e pesquisa nomes de arquivos e seu conteúdo em locais indexados. Mas você pode alterar isso se acessar a guia Ferramentas- > Opções de pasta- > Pesquisa.

Se você não encontrar sua extensão de arquivo na lista de indexação, poderá adicioná-la nas opções avançadas de indexação:

É surpreendente que ninguém tenha falado sobre isso.

    
por 15.12.2012 / 02:35