mordor.sh

Publicado por Fábio Berbert de Paula 13/11/2002

[ Hits: 5.428 ]

Homepage: https://mestrefabio.com

Download mordor.zip




Programa que procura por determinada palavra em todos os arquivos texto de determinado diretorio.

  



Esconder código-fonte

#!/bin/bash
#Mon Sep  2 22:46:04 GMT 2002
#
# mordor.sh
# Coded by Carlos Carvalho <h4sh@uol.com.br> <www.vivaolinux.com.br>
#
# Programa que procura por determinada palavra em todos os
# arquivos texto de determinado diretorio.
# Em certas ocasioes voce pode precisar saber por exemplo onde
# estao definidas algumas configuracoes de sistema como por exemplo
# o HOSTNAME, descobrindo quais arquivos contem seu hostname te ajudara
# a saber quais sao responsaveis pelas definicoes. Ou voce pode 
# tambem apenas escanear por outras palavras-chave, de qualquer forma
# quem decide isso e voce.
# Mais uma vez fiz um programa apos procurar por um semelhante e nao
# obter sucesso, afinal, sao assim que eles nascem.
# Programa criado em meu Slackware 8.0
#
# Obs: Em certos diretorios onde arquivos sao nomeados com numeros
# o script pode apresentar comportamento erroneo, listando 
# um ou outro arquivo mais de uma vez, deixando assim de listar outros
# arquivos, prejudicando a busca. Ainda nao tive tempo nem paciencia
# de corrigir esse bug, assim que possivel farei isso.
# Se voce quiser corrigir va em frente e me mande uma copia :]
#    
# Como usar:
# ./mordor.sh -get [inicia programa]
# ./mordor.sh -see [exibe resultado]
# ./mordor.sh -del [deleta resultado]

GANDALF=/tmp/temp.txt ; GIMLI=/tmp/result.txt
SAURON=/tmp/busca.txt ; ORCS=/tmp/file

tolkien ()
{
if [ -f "$GANDALF" ]; then
rm -rf "$GANDALF"
fi
if [ -f "$ORCS" ]; then
rm -rf "$ORCS"
fi
if [ -f "$SAURON" ]; then
rm -rf "$SAURON"
fi

echo -n "Digite a palavra: "
read TEXTO
echo -n "Digite o diretorio de busca: "
read DRCT

if [ ! -d $DRCT ]; then           
echo "Diretorio nao existe"      
echo "Programa abortado."       
exit 1                         
fi                            

touch "$GIMLI"
ls "$DRCT" |grep -n $ > "$GIMLI"

BEGIN=1
END=$(tail -1 "$GIMLI" |cut -d ":" -f1)

while [ "$BEGIN" -le "$END" ]; do
      ENTRY=$(cat "$GIMLI" |grep "$BEGIN" |head -1 |cut -d ":" -f2)
      file "$DRCT"/"$ENTRY" |grep text > "$ORCS"
   if [ -s "$ORCS" ]; then
            cat "$DRCT"/"$ENTRY" |grep "$TEXTO" > "$GANDALF"
             if [ -s "$GANDALF" ]; then
           echo "Encontrado \"$TEXTO\" em "$DRCT"/"$ENTRY"" >> "$SAURON"
        fi
        fi
BEGIN=`expr $BEGIN + 1`
done
rm -rf $GANDALF && rm -rf $GIMLI && rm -rf $ORCS
echo "Para visualizar resultado: $0 -see"
echo "Pronto!"
}

case $1 in
      -get)
         tolkien
         ;;   
      -see)
         if [ -f "$SAURON" ] ; then
         less "$SAURON"
         else
         echo "NAO localizado !"
         echo "use: $0 -get"
         fi
         ;;
      -del)
         rm -rf "$SAURON"
         ;;
      *)
         echo "usage: $0 [-get|-see|-del]"
         ;;
esac
#EOF

Scripts recomendados

Convertendo man pages em PDFs (Versão CShell)

pscheck.sh

Limpar o histórico dos documentos recentes do Ubuntu 11.10

rc.squid start|stop|restart Servidor Proxy

Sem APTONCD


  

Comentários
[1] Comentário enviado por vitinho217 em 04/07/2014 - 10:55h

gostei do contexto LOTR !

[2] Comentário enviado por vitinho217 em 06/07/2014 - 19:13h

Corrija a linha 51:

if [ ! -d $DRCT ]; then

proteja o argumento $DRCT com ""

Um abraço !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts