Linux – Script Bash para encontrar ficheros duplicados con diferentes nombres en el mismo directorio

Algunas veces tenemos un directorio lleno de ficheros repetidos con nombres distintos.

Por ejemplo: dentro de un directorio tipo maildir después de algún problema podemos tener un montón de ficheros repetidos con nombres diferentes: el mismo mensaje de e-mail varias veces.

Encontrar ficheros duplicados con diferentes nombres en el mismo directorio usando Bash

Este script muestra solo los ficheros que están mas de una vez y cuantas veces están repetidos:

md5sum *| sort |uniq -w33 -D

Podemos añadir este script en nuestro fichero .bash_aliases file para tenerlo siempre disponible:

alias EncontrarFicherosDuplicados='md5sum *| sort |uniq -w33 -D'

md5sum obtiene la suma de control MD5 (128-bit) de cada fichero, los cual nos sirve para identificar ficheros repetidos. Los ficheros que tengan igual suma de control son iguales aunque tengan el nombre distinto.

El formato tiene 2 columnas: La primera columna tiene 32 caracteres con la suma de control y la segunda columna con el nombre Ejemplo:

a4d29c43765b0840b5713cb2029c79b2 1161600399.10652.uPsdZ:2,S

Con sort agrupamos los ficheros repetidos según su suma de control y con uniq -w33 -D comparamos solo esa suma de control (los 32 caracteres y mostramos por pantalla la tupla suma de control + nombre de fichero de ficheros repetidos

Un resultado tipico podria ser:

1ca439f3907b8552a2391a4214b1da9e 1161600477.10652.vA5ww:2,S
1ca439f3907b8552a2391a4214b1da9e 1161600484.10652.RgsF6:2,S

Esto significa que tenemos 1 fichero repetido 2 veces con la suma de control igual a :

1ca439f3907b8552a2391a4214b1da9e

Y que los ficheros son:

1161600477.10652.vA5ww:2,S
1161600484.10652.RgsF6:2,S

Share

5 thoughts on “Linux – Script Bash para encontrar ficheros duplicados con diferentes nombres en el mismo directorio

  1. Me viene como anillo al dedo…. =))

    Una pregunta: Como se podria mejorar para que lo haga de forma recursiva?.
    Estoy ordenando las fotos y tengo gran parte separada en subcarpetas… esto solo verifica los archivos que estan en el 1er nivel del path.

    Saludos

    • Hola Gonza,

      Me alegro de que te fuera bien. Este script lo hice hace mucho tiempo por que me hizo falta para algo. (no recuerdo que) y nunca jamas lo volví a usar.

      Para lo que quieres hay ya una herramienta hecha: fdupes – identifies duplicate files within given directories

      Aquí la descripción mas completa:

      Descripción: identifies duplicate files within given directories
      FDupes uses md5sums and then a byte by byte comparison to find duplicate files within a set of directories. It has several
      useful options including recursion.
      Página principal: http://code.google.com/p/fdupes/

      Espero que te sirva!

      Ya me diras que tal fue

      Salu2

      Juan

  2. utilizando el comando find podemos ampliar las opciones, por ejemplo.

    find . -maxdepth 1 -type f -exec md5sum {} \; | sort | uniq -w33 -D
    –>de esta forma buscamos también los ficheros ocultos
    find / -maxdepth 1 -type f -exec md5sum {} \; | sort | uniq -w33 -D
    –>de forma recursiva y en todo el disco

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.