Pesquisa recursiva

Publicado por Marco Carvalho de Oliveira 24/10/2008

[ Hits: 11.759 ]

Homepage: http://demoncyber.wordpress.com/

Download procura-recursiva.sh




Certo dia um professor me procurou perguntado como ele poderia fazer uma busca recursiva em vários arquivos de pdf em várias pastas para saber se existia uma determinada expressão neles, utilizando shellscript. E aí está a resposta.

Processo adotado:
- Converter arquivos pdf em texto
- Fazer a busca por expressão regular no arquivo com a expressão requisitada
- Escrever em um outro arquivo os documentos que contém a expressão procurada

  



Esconder código-fonte

#  procura-recursiva - Simples script para a busca em vários arquivos do tipo pdf de forma recursiva
#  Marco Carvalho de Oliveira - demoncyber@gmail.com ou marco@colmeia.udesc.br
#  Colméia - Grupo de Pesquisa em Software Livre
#
#!/bin/bash

IFS=$’\n’
#seta o separador de comandos para quebra de linha isto é para resolver caso tenhamos a indesejável utilização de espaços nos nomes dos arquivos

MYTMP=/tmp/procura-recursiva/
# pasta utilizada pelo programa

rm -rf $MYTMP
mkdir $MYTMP

for files_pdf in `find -type f | grep “\.pdf$” | sed “s/\.//”`
do
LOC_FILE=`pwd`$files_pdf
# diretorio onde se encontra o arquivo seguido do seu nome
NAME_FILE=`basename $files_pdf`
# nome dp arquivo pdf analizado
FIND_FILE=$MYTMP$NAME_FILE.txt
# Arquivo temporário de pdf em forma de texto para ser utilizado na busca rescursiva
pdftotext $LOC_FILE $FIND_FILE
# Converte o arquivo pdf para um arquivo de texto para executar a busca
grep $1 $FIND_FILE >> /dev/null
# Procura no arquivo de texto e joga o resultado para o buraco negro
if [ $? = 0 ]
then
#verifica se a busca foi bem sucedida caso sim imprime que foi econtrada a palavra chave no arquivo
echo “Expressao encontrada no arquivo $NAME_FILE”;
fi
done

# modo de usar, estando no diretorio que vc quer fazer a busca
# bash procura-recursiva expressao

Scripts recomendados

Backup fita dat

Limpar fila de email

WPA-ELFaVirgin 0.1

Pegando IP sem saber qual interface está sendo usada

Talk Weather - Anúncio do tempo e temperatura em voz sintetizada


  

Comentários
[1] Comentário enviado por Riverfount em 25/10/2008 - 14:05h

Olá Marco,

Achei bem interessante esse teu script e com a solução proposta!

Agora, como leigo, faço uma pergunta:

Existem, hoje, pdf's pesquisáveis (quase a maioria dos que são gerados hoje, a não ser que o autor bloqueie isso!), não seria, ao menos, mais rápido esse teu script se utilizasse essa propriedade? Pois evitaria ter que converter o pdf para txt, gravar no diretório tmp e, só ai, fazer a pesquisa.

Mas como disse, é uma pergunta de leigo mesmo!

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts