Listar ficheros duplicados

Con este mini script podemos listar los ficheros duplicados de cualquier directorio y recursivos:

find DIRECTORIO_PADRE -type f -print0 |  xargs -0 -n1 md5sum | sort --key=1,32 | uniq -w 32 -d --all-repeated=separate | cut -c35-

Explicación:

  • find DIRECTORIO_PADRE -type f -print0
    Busca todos los ficheros (-type f) desde el directorio DIRECTORIO_PADRE y los muestra con el path completo terminado con un carácter null al final(-print0).
  • xargs -0 -n1 md5sum
    pasa cada uno de los fichero encontrados (terminados con null -0 y como máximo 1 -n1) al comando md5sum y devuelve el checksum y el nombre del fichero.
  • sort –key=1,32
    Ordena el listado usando los primeros 32 caracteres que es el checksum del MD5.
  • uniq -w 32 -d –all-repeated=separate
    Muestra SOLO los duplicados (-d), ignorando los únicos, para ello solo compara los 32 primeros caracteres (-w 32) y agrupa los ficheros duplicados en grupos separados por una línea en blanco (–all-repeated=separate)
  • cut -c35-
    Corta los 35 primeros caracteres que el el checsum y espacios, dejando solo el nombre del fichero.