buscaTexto.sh - busca um determinado conteudo em todos os arquivos

Publicado por Raimundo Alves Portela (última atualização em 01/06/2012)

[ Hits: 5.985 ]

Homepage: http://portelanet.com

Download buscaTexto.sh




Script simples, porém espero que seja útil, feito para ajudar no tópico: http://www.vivaolinux.com.br/topico/Linux-Basico/Emulador-Grafico-Scripts/?pagina=1

./buscaTexto.sh DIRETORIO_A_BUSCAR CONTEUDO_A_BUSCAR

O mesmo permite buscar o conteúdo fornecido em todos os arquivos tipo texto dentro do diretório fornecido.

Como resultado mostra o nome do arquivo e a linha onde o conteúdo foi encontrado.

Exemplo;

./buscaTexto.sh /home/rai3mb 'viva o linux'

  



Esconder código-fonte

#!/bin/bash
#===============================================================================
#
#          FILE:  buscaTexto.sh
# 
#         USAGE:  ./buscaTexto.sh DIRETORIO_A_BUSCAR CONTEUDO_A_BUSCAR
# 
#   DESCRIPTION:  Busca um determinado texto fornecido em todos os arquivos tipo 
#        text (HTML, ASCII text, etc) encontrados no diretório fornecido
#
#        AUTHOR:   (Raimundo Portela - rai3m@gmail.com), 
#       COMPANY:  
#       VERSION:  1.0
#       CREATED:  05/31/2012 12:43:11 AM BRT
#===============================================================================
# valida se a sintaxe de uso foi obedecida
[ ! "$1" -o ! -d "$1" -o ! "$2" ] && echo "Sintaxe de uso $0 DIRETORIO_A_BUSCAR CONTEUDO_A_BUSCAR" && exit 1
# busca os arquivos texto existentes do diretorio fornecido
ARQ_TEMP=$(tempfile -d /tmp)
find "$1" -type f -exec file {} \; 2>/dev/null | egrep '.*:.*text' | cut -d':' -f1 > $ARQ_TEMP
while read ARQUIVO 
do 
   egrep -niH "$2" "$ARQUIVO"
done < $ARQ_TEMP

Scripts recomendados

Gerador de senhas

Teste de Índice de Massa Corporal (IMC)

Loop Infinito - Modo Basico

Configução básica de uma rede local, roteando e habilitando o firewall

Script para criar tar.gz e tar.bz2


  

Comentários
[1] Comentário enviado por andre.vmatos em 01/06/2012 - 13:19h

O grep/egrep já faz isso, com a opção -r:
$ egrep -rni EXP *

[2] Comentário enviado por rai3mb em 05/06/2012 - 01:21h

Acontece que o egrep -r para muitos arquivos fica muuuuuuuuuuuuuito lento.

Fiz um teste com ele buscando 'redmine' em meu HD, com o script pelo fato de filtrar bastante os arquivos, demorou 7 minutos, com o egrep -r nem sei quanto tempo demorou por fui dormir, já tinham se passado 2 horas e nada de terminar ;-), o problema é que ele busca ate mesmo dentro de arquivos compactador, binários, .jar, etc,dai a necessidade de se fazer filtros como nesse script.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts