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

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

[ Hits: 5.999 ]

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

Configurando clientes NIS em distros baseadas no Red Hat

Automação em cópia de arquivos de backup

Simula comando PAUSE do MSDOS

Adicionando usuarios samba

Compac.sh (Versão CShell)


  

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