Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Metasys Classmate
Por Gedimar
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Marco Carvalho de Oliveira em 24/10/2008    [ 4206 hits ]

Login: demoncyber, 119620 pontos

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


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

[ Download: procura-recursiva.sh ]   [ Enviar nova versão ]

[ 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
   Script Linux recomendado Backup fita dat
   Script Linux recomendado Script de compilação do kernel
   Script Linux recomendado Alimente seu arquivo de bloqueio e liberação no Squid
   Script Linux recomendado service
   Script Linux recomendado Gerar lista de IPs em arquivo texto

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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.