Pesquisa recursiva
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
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
Descrição
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
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
# 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
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