Estoy usando OSX 10.8.4 y me gustaría eliminar archivos duplicados en un solo directorio plano si un hash md5 coincide.
He buscado varias respuestas, pero ninguna de ellas me funciona, creo que debido a las diferencias en la sintaxis de comandos entre las versiones de terminal.
Cosas que he probado:
http://www.chriswrites.com/2012/02/how-to-find-and-delete-duplicate-files-in-mac-os-x/
Encontrar y eliminar archivos duplicados en osx con un script
y algunos de estos: http://www.commandlinefu.com/commands/view/3555/find-duplicate-files-based-on-size-first-then-md5-hash#comment
Este enfoque se siente más cercano:
find . -size 20 \! -type d -exec cksum {} \; | sort | tee /tmp/f.tmp | cut -f 1,2 -d ' ' | uniq -d | grep -hif - /tmp/f.tmp > duplicates.txt
Pero me sale un error: grep: -: No such file or directory
Tras la inspección, /tmp/f.tmp existe. El archivo duplicates.txt se crea pero está vacío.
¿Cómo deduplicar estos archivos?
fuente

Respuestas:
De manera predeterminada, en Mac OS obtendrá BSD
grep, mientras que el comando que ha publicado es probablemente para GNUgrep. Las dos versiones de las herramientas son similares, pero no idénticas. Esto también es cierto para otras herramientas (por ejemplo, las versiones de GNU y BSD también sedatecomportan de manera ligeramente diferente).El problema es el
-siguiente comando grep. GNUgrepinterpreta esto comostdin(por lo tanto, aquellas líneas que han sido identificadas como duplicadas poruniq -d), mientras que BSDgrepestá buscando un momento llamado-; de ahí el mensaje de error:Lo mismo sucede si reemplaza el
-con otro nombre que no coincide con ningún archivo:De que puede en bash sustitución proceso para alimentar a la salida estándar del todo hasta el
uniqquegrepcomo un archivo, por ejemplo, (se me ha caído el criterio de tamaño en este ejemplo, pero el resto es lo mismo):fuente
Encontrar duplicados basados en hashkey funciona bien y es muy rápido. Yo uso el siguiente código a menudo. Si está ejecutando esto en una Mac y enfrenta algún problema, instale las herramientas de GNU y use la segunda versión.
Linux
Versión para Mac
fuente
uniq -w32es realmente la pieza que faltaba en el rompecabezas - sin coincidencia de líneas parcial, la búsqueda de duplicados es significativamente más difícil (sobre todo en un lenguaje shell).