Indexando o conteúdo do arquivo de texto com a consulta da linha de comando

3

Eu faço anotações diárias em um arquivo de texto simples rotulado com data no formato YYYYMMDD. Esses arquivos não têm mais de 100 linhas e são gravados em um formato de estilo de blog.

Eu gostaria de poder pesquisar esses arquivos como se fossem postagens indexadas pelo google, com alguma consulta de frase retornando os nomes de arquivos mais relevantes / recentes, com um fragmento contendo a parte relevante.

Idealmente, seria algo assim:

#searchindex "laptop no sound"

retorna:

20100909.txt:

... som do laptop não está funcionando ...

20100101.txt

... som é muito alto ... debatendo o laptop para comprar ...

e assim por diante e assim por diante.

Estou trabalhando em uma plataforma Linux (Debian com GNOME). Eu olhei para o Beagle e o Tracker, mas eles parecem um completo exagero para o que eu quero.

EDIT: Muitas sugestões incluem grep, mas eu gostaria de algo um pouco mais poderoso do que isso, tendo em conta a proximidade de palavras-chave, data, etc Muitos desses arquivos terão palavras-chave um pouco semelhantes, então eu vou estar recebendo também muitos hits usando apenas grep. Eu não me importo com a sobrecarga extra de indexação.

    
por Drew Carlton 20.02.2011 / 12:35

4 respostas

2

Você pode usar grep em uma função bash para isso:

function searchindex ()
{
    if [ "$#" -gt 0 ] ; then
        ls -t | xargs -L1 grep -H -C3 -- 'echo "$@" | sed 's/ /\\|/g''
    fi
}

Onde -C3 é o número de linhas do contexto, se você quiser apenas a linha correspondente, poderá removê-la.

    
por 20.02.2011 / 13:02
1

Outra opção é usar o vislumbre .

É um indexador, portanto, primeiro você precisa criar o índice:

glimpseindex -B -H {Directory for index} -f

Você pode pesquisar os arquivos de uma forma bastante poderosa com o comando glimpse.

O Glimpse é bastante antigo, mas faz o trabalho por mim.

    
por 31.05.2011 / 09:07
0

Um grep simples faria o que você quer?

$ egrep "laptop|sound" *txt
20100101.txt:sound is too loud... debating what laptop to buy
20100505.txt:the sound of silence
20100606.txt:I just bought a new laptop
20100909.txt:laptop sound isn't working

$ egrep "laptop.*sound|sound.*laptop" *txt
20100101.txt:sound is too loud... debating what laptop to buy
20100909.txt:laptop sound isn't working

$ grep laptop *txt | grep sound
20100101.txt:sound is too loud... debating what laptop to buy
20100909.txt:laptop sound isn't working
    
por 20.02.2011 / 13:58
0

O Google-Desktop-Linux está disponível nos repositórios do Debian e fará o que você quiser. Se você tiver problemas com a tecla de atalho padrão para exibir a caixa de pesquisa, use esta correção . Você pode restringir os tipos de arquivos e locais que são indexados para que você não fique sobrecarregado. Eu tentei o Beagle e o Tracker antes de me instalar no Google Desktop.

Linha de comando não é desculpa, mas ainda vale a pena dar uma olhada.

    
por 20.02.2011 / 15:21