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
excelente