[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]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Comparar arquivos,
daniel martines <=