shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Comparar arquivos


From: daniel martines
Subject: Comparar arquivos
Date: Mon, 1 Oct 2007 05:03:14 -0700 (PDT)

Bom dia a todos.
Preciso criar um shell script para realizar a seguinte tarefa: Identificar e 
renomerar os arquivos que têm o mesmo conteudo.
Exemplo: CAD_20070101_A.in , CAD_20070101_B.in , CAD_20070101_C.in e 
CAD_20070101_D.in.Onde A e B são iguais e C,D são diferentes de A.Nesse caso, o 
shell precisará renomear o arquivo B já que o conteudo já existe no arquivo A.O 
arquivo será considerado identifico se existir apenas uma unica diferença.Isso 
acontece apenas na primeira linha do arquivo.Pois, nessa linha contem data hora 
minuto e segundo que o arquivo foi gerado.Mas, os demais registros são 
identicos..
Observação: Esse é meu primeiro shell script e nem escrevi isso no linux.Isso é 
alógica que imagino e caso.Solicio ajuda de todos para saber se esta linha se 
solução está legal ou se existe forma melhor. 
Bem, para isso estou fazendo o seguinte:

ORI_IFS=$IFS
IFS=$"/n"
primeiroArquivo="Vazio"
segundoArquivo="Vazio"

#obtem os arquivos que devem ser validados classificados por nome
for LINHA in $(ls -lt CAD* | cut -c44-90);do

        #conta quantos arquivos foram obtidos
    ++contaArquivos 
   
    
    #alimenta o primeiro arquivo
    if[primeiroArquivo = "Vazio"]; then  
       primeiroArquivo = $LINHA
    elfi
       #alimenta o segundo arquivo
       [segundoArquivo = "Vazio"]; then  
        segundoArquivo = $LINHA
    fi

    #compara o primeiro com o segundo arquivos
    if [primeiroArquivo != "Vazio"] | [segundoArquivo != "Vazio"]; then

        #obtem o resultado do diff.        
        retornoDiff = 'diff -e $primeiroArquivo $segundoArquivo | head -1-n1 | 
cut -c1-3'      

        #valida o retorno.Caso igual a '1c' o mesmo deve ser renomeado.  
        if [retornoDiff = "1c"]; then

                      #conta quantos arquivos foram renomeado
           ++contaArquivosRenomeados 

                      #soma a quantidade de bytes dos arquivos renomeados
           ??????????????????????????????????????????????????? 
           
           #renomear arquivo
           retornoRenomear = 'mv $segundoArquivo "RM_"+$segundoArquivo'

           #validar se a mv funcionou corretamente
           ???????????????????????????????????????

           #alterar o segundoAqruivo para obter um novo nome
           segundoArquivo = "Vazio"

        elfi

           #mudar a ordem de verificação para pegar o proximo arquivo           
           primeiroArquivo = segundoArquivo
           segundoArquivo = "Vazio"                     

        fi         

done
IFS=$ORI_IFS

#transfere os arquivos 
retornoTransf= 'mv RM_CAD* /arquivosDuplicados'


#validar se a mv funcionou corretamente
?????????????????


      Abra sua conta no Yahoo! Mail, o único sem limite de espaço para 
armazenamento!
http://br.mail.yahoo.com/

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]