Script que verifica se existem arquivos repetidos em dois diretórios

Publicado por Leandro Santiago 10/11/2006

[ Hits: 8.919 ]

Homepage: http://leandrosan.wordpress.com

Download repetidos




É meu primeiro script, ou seja, está bem tosco, e como se pode ver não serve pra muita coisa, mas tem lá suas utilidades...

Ele verifica se dois arquivos são o mesmo baseado no nome dos arquivos e no md5sum dos mesmos. Ou seja, arquivos iguais, mas com nomes diferentes serão considerados iguais.

Funciona assim:

# ./repetidos dir_de_destino arq_de_log (este último opcional)

Hey, eu ainda estou aprendendo a usar o case!

  



Esconder código-fonte

#!/bin/bash

# Escrito por Leandro Santiago da Silva
# e-mail: leandrosansilva@gmail.com
# Críticas, sugestões, enviarem para esse e-mail.

# Programa que verifica se você tem um mesmo arquivo em vários diretórios
# A checagem é feita via md5sum, o que faz com que mesmo que arquivos diferentes tenham o mesmo nome, serem ainda sim considerados diferentes
# É possível jogar a lista dos arquivos repetidos num arquivo de log.
# Mais informações, tente 
# ./repetidos --help #   




## A função echos eu retirei do programa funcoeszz (http://www.funcoeszz.net)

echos(){
   echo -e "{FONTE}33[36;1m$*"; echo -ne "{FONTE}33[m"
}

if [ -z $1 ]; then
  echo
  echo "Uso deste programa:"
  echo
  echos "$0 diretório-destino "
  echo
  echo "Mais informações, digite $0 --help"
  echo
  exit
fi

if [ $1 = '--help' ]; then
   echo
   echo "Uso deste programa:"
   echo
   echos "$0 diretório-destino "
   echos "$0 diretório-destino arquivo_de_log"
   echo
   echo "Escrito por Leandro Santiago da Silva"
   echo
   echo "leandrosansilva@gmail.com"
   echo
   exit
fi

if [ $1 = '--version' ]; then
   echo
   echos "Versão 0.0.0.0.0.1-beta"
   echos
   exit
fi

for ARQUIVO in * ; do
   if [ -e $1/$ARQUIVO 2> /dev/null ]; then
      if [ $( md5sum $ARQUIVO 2> /dev/null | cut -f1 -d' ') = $( md5sum $1/$ARQUIVO 2> /dev/null | cut -f1 -d' ' ) ]; then
        echos $ARQUIVO
        if [ ! -z $2 ]; then
           echo $ARQUIVO >> $2
        fi
      fi
   fi
done

Scripts recomendados

Bate papo com Davi

backup diferencial remoto

Automatizando a Instalação do Firefox no Ubuntu 9.04 Jaunty Jackalope

Despertador com soneca

Soma valores de uma lista (calculo notas, pontos, etc)


  

Comentários
[1] Comentário enviado por tenchi em 18/10/2006 - 21:48h

Hum.... o conteúdo da visualização está errado, pois quando fui colar o documento, ficou tudo diferente (troca de caracteres, dentre outras coisas). Por isso, se quiser verificar os verdadeiros erros desse script, faça o download do conteúdo.
Um dos erros, que muitos irão notar é que os diretórios também entram na lista de arquivos iguais, se tiverem o mesmo nome. Por favor, quem douber como resolver esse problema, que poste aqui nos comentários como fazer isso. Eu estou aqui para aprender mesmo...


Contribuir com comentário