Remove linhas

Publicado por Rafael Klock (última atualização em 22/07/2010)

[ Hits: 7.753 ]

Homepage: http://bredes.com.br/

Download Removelinhas.sh

Download Removelinhasv2 (versão 2)




Verifica em um determinado diretório todos os arquivos e exclui as linhas que você desejar. Exemplo:

$ Removelinhas.sh /home/rafael/teste cavalo

Esse comando irá verificar dentro da pasta "teste" arquivo por arquivo. Se o arquivo contiver a palavra cavalo, ele exclui apenas aquela linha.

O script vem com a opção --help caso precisem de ajuda.

DICA: Para executar o script de qualquer lugar, copiem o script para a pasta /bin:

$ sudo cp Removelinhas.sh /bin/Removelinhas

Espero que seja útil.

Falou!

  



Versões atualizadas deste script

Versão 2 - Enviado por Rafael Klock em 14/07/2010

Changelog: Nova versão, com algumas correções, e com opções de backup.

falow

Download Removelinhasv2


Esconder código-fonte

#/bin/bash



# HELP 
if [ "$1" = "--help" -o "$1" = "-h" ];then
clear
echo ""
echo ""
echo "      --->    Remove Linhas V.01    <---"
echo ""
echo "USO:    Removelinhas [DIR] [PALAVRA A SER EXCLUIDA]"
echo ""
echo "Ex:     Removelinhas /home/user/teste/ zabuloni.silva"
echo "exclui as linhas que contém "zabuloni.silva", em todos os arquivos da pasta teste"
echo ""
#echo "Erro n1: Provavelmente você esteja digitando um número em vez de um diretório."
#echo ""
echo "Email para contato: kklockk@gmail.com"
echo ""
exit 0
fi


# VARIAVEIS 
contarqalt="0"
contperm="0"
contdir="0"
linha="1"
WC=$((1+`ls -1|wc -l`))


# IF que força passar dois parametros 

if [ "$1" = "" -o "$2" = "" ]; then
echo ""
echo ""
echo "Tente:  Removelinhas [DIRETORIO] [PALAVRA A SER EXCLUIDA]"
echo ""
echo "Ajuda: ->   Removelinhas.sh --help"
echo ""
exit 0
fi


# PROCESSO 
echo ""
echo "O Processo foi iniciado. Aguarde."

echo "" >> ~/logremovelinhas.txt
echo "*************************************************" >> ~/logremovelinhas.txt
echo "INICIO DO LOG: **( $2 )**    Data: `date`" >> ~/logremovelinhas.txt
echo "" >> ~/logremovelinhas.txt



# GREP 
echo "       # Comando grep $2 $1 #" >> ~/logremovelinhas.txt
grep $2 $1/* >> ~/logremovelinhas.txt
echo "" >> ~/logremovelinhas.txt

echo "       # Arquivos Alterados #" >> ~/logremovelinhas.txt


# INICIO DO WHILE  
while [ $linha != $WC ]; do

  HEAD=`ls $1 -1| head -n $linha |tail -n 1`


  #teste se o HEAD for um arquivo, ele executa o algoritmo.
  test -f $HEAD
  if [ "$?" -eq "0" ]; then
      test -w $HEAD
      if [ "$?" -eq 0 ]; then
             cat $HEAD |grep "$2" -v > FILE.TMP
         cmp FILE.TMP $HEAD -s >> ~/logremovelinhas.txt
         if [ "$?" -eq "0" ]; then
         rm FILE.TMP
            else
            contarqalt=$(($contarqalt+1))
            echo "Arquivo alterado: $HEAD" >> ~/logremovelinhas.txt
            rm $HEAD
            mv FILE.TMP $HEAD
         fi
             else
             contperm=$(($contperm+1))
        echo "Não tem permissão: $HEAD" >> ~/logremovelinhas.txt
      fi
      else
      contdir=$(($contdir+1))
  fi
  linha=$(($linha+1))
done

test -e $1/FILE.TMP
if [ "$?" -eq "0" ]; then
rm $1/FILE.TMP
fi

echo "" >> ~/logremovelinhas.txt
echo "Voce tem $contdir pastas." >> ~/logremovelinhas.txt
echo "Arquivos alterados: $contarqalt" >> ~/logremovelinhas.txt
linha=$(($linha-1)) >> ~/logremovelinhas.txt
echo "Quantidade de arquivos verificados: $linha" >> ~/logremovelinhas.txt
echo "Quantidade de arquivos que vc não tem permição: $contperm" >> ~/logremovelinhas.txt
echo "Foi salvo um log no seguinte diretorio: ~/logremovelinhas.txt" >> ~/logremovelinhas.txt

echo "" >> ~/logremovelinhas.txt
echo "FIM DO LOG!      DATA: `date`" >> ~/logremovelinhas.txt
echo "**************************************************" >> ~/logremovelinhas.txt
echo "" >> ~/logremovelinhas.txt
echo "" >> ~/logremovelinhas.txt
echo ""
echo "Processo Finalizado!   Log salvo em:  ~/logremovelinhas.txt"
echo ""

Scripts recomendados

Recriando /dev/null facilmente

Criando Autoridades Certificadoras e Certificados de Testes no Linux

Script de busca (google em shell)

Script FIREWALL IPTABLES com 3 (três) interfaces (Int, Ext e DMZ)

upload script


  

Comentários
[1] Comentário enviado por rafael.klock em 13/07/2010 - 14:50h

Em breve irei publicar a nova versão!

[2] Comentário enviado por luismello em 12/08/2010 - 00:16h

Ola

Testei e nao removeu a linha com a palavra, no arquivo de log mostra todas as linhas com a palavra.
Mas nao exlui a linha e nao da erro algum.

Poderia ajudar?

[3] Comentário enviado por rafael.klock em 12/08/2010 - 09:37h

tens como mandar o log pro meu email? kklockk@gmail.com


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts