Atopar arquivos repetidos con fdupes.

Fdupes é un programa que nos permite atopalos arquivos duplicados ainda que teñan outro nome, compara se o tamaño dos mesmos é igual e se a súa suma MD5 coincide, nese caso fai un chequeo dos arquivos byte a byte pra saber si se trata do mesmo.

É útil pra aforrar espazo e evitar duplicidades de arquivos no noso sistema.

Instalación en Fedora.

Comando:
yum install fdupes

Uso de fdupes.

Supoñamos que tes un directorio con wallpapers que ocupa uns 4,6 GiB.

Cómo amosaría o seguinte comando:
du -cah
Cómo son uns 3290 arquivos, non vou a amosar tódalas liñas, mais estas serían as últimas liñas que amosa o comando:
1,6M    ./wallpaper 138.jpg
508K    ./wallpaper 143.jpg
452K    ./wallpaper 157.jpg
972K    ./wallpaper 175.jpg
268K    ./wallpaper 203.jpg
2,8M    ./wallpaper 278.jpg
848K    ./wallpaper 336.jpg
1,2M    ./wallpaper 423.jpg
1,5M    ./wallpaper 481.jpg
1,1M    ./wallpaper 539.jpg
804K    ./wallpaper 742.jpg
4,6G    .
4,6G    total

O caso é que observando as imaxes, me fixei que nalgunhas das miñas 3290 imáxenes algunhas se repetían incluso ata 3 veces, o cal pode resultar molesto e ocupar espazo de máis.

Vamos usar fdupes coas seguintes opcións:
-1 --sameline
       list each set of matches on a single line
-S --size
       show size of duplicate files
-d --delete
       prompt user for files to preserve, deleting all others (see CAVEATS below)
A opción de “na mesma liña” é un “un” non unha “i”:
fdupes -1Sd .
Tras executar a comprobación dos arquivos, amosa a primeira pregunta de 78:
$ fdupes -1Sd .
[1] ./wallpaper 423.jpg                 
[2] ./wallpaper 347.jpg
 
Set 1 of 78, preserve files [1 - 2, all] (1156639 bytes each):

Onde se nos pide seleccionar un número 1 ou 2, pra elexir o arquvio que nos interesa conservar ( o resto se liminan ) ou ben escribindo “all” borraremolos todos.

Como son algo desconfiado vou comprobar se os wallpapers 423 y 347 son o mesmo…

Efectivamente son a mesma imaxen, me interesa conservar a primeira imaxen.

Selecciono “1” e doulle a enter.

A continuación coma resposta a miña selección amosa un “+” pro arquivo 1 e un “-“ pra o arquivo 2 indicando que foi eliminado:
$ fdupes -1Sd .
[1] ./wallpaper 423.jpg                 
[2] ./wallpaper 347.jpg
 
Set 1 of 78, preserve files [1 - 2, all] (1156639 bytes each): 1
 
   [+] ./wallpaper 423.jpg
   [-] ./wallpaper 347.jpg
 
[1] ./wallpaper 905.jpg
[2] ./wallpaper 123.jpg
 
Set 2 of 78, preserve files [1 - 2, all] (301047 bytes each):

Agora toca seguir eliminando as duplicidades nos outros 77 arquivos.

En cuestión duns minutos, eliminei 78 duplicacións e este foi o resultado:
...
284K    ./wallpaper 134.jpg
1,6M    ./wallpaper 138.jpg
508K    ./wallpaper 143.jpg
452K    ./wallpaper 157.jpg
972K    ./wallpaper 175.jpg
268K    ./wallpaper 203.jpg
2,8M    ./wallpaper 278.jpg
848K    ./wallpaper 336.jpg
1,2M    ./wallpaper 423.jpg
1,5M    ./wallpaper 481.jpg
1,1M    ./wallpaper 539.jpg
804K    ./wallpaper 742.jpg
4,5G    .
4,5G    total

Onde aforrei como 100 MiB, que non está nada mal xa que supón espazo pra 50 ou 120 wallpapers máis. Pasei de 3290 ficheiros, a 3202 ficheiros.