mordor.sh

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

[ Hits: 5.427 ]

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

Inversor de link

Backup de Diretórios

Converter todas as imagens de um diretório

Ativar sudo no Insigne Linux

Script para verficar se um pacote está instalado no Slackware


  

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