Así que estoy revisando el md5hash de mis archivos con esto como mi salida:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
657cf4512a77bf47c39a0482be8e41e0 ./dupes.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Sin embargo, después de correr find . -type f -exec md5sum '{}' ';' | uniq -w 33para encontrar los hashes únicos, obtengo esto:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Según tengo entendido, solo uno de uno derpina.txto derp.txtdebería aparecer ya que sus hashes son los mismos. ¿Me estoy perdiendo de algo? ¿Alguien puede aclararme por qué sale así?
command-line
bash
uniq
user2127726
fuente
fuente

Respuestas:
Necesitas usar
sortantesuniq:uniqsolo elimina líneas repetidas. No reordena las líneas buscando repeticiones.sorthace esa parteEsto está documentado en
man uniq:fuente
uniqdebe tener un alias comosort -upredeterminado en todos los sistemas. Si es que siempre necesita "ordenar" para que funcione correctamente.uniqtiene muchas características que no están disponibles consort -u. Además, hay casos en los que uno quiere usaruniqsin élsort.La entrada para
uniqnecesita ser ordenada. Entonces, para el caso de ejemplo,trabajaría. El
-w(--check-chars=N) hace que las líneas sean únicas solo con respecto a la primera columna; Esta opción funciona para este caso. pero las posibilidades para especificar las partes relevantes de la líneauniqson limitadas. Por ejemplo, no hay opciones para especificar el trabajo en algunas columnas 3 y 5, ignorando la columna 4.El comando
sorttiene una opción para líneas de salida únicas en sí, y las líneas son únicas con respecto a las teclas utilizadas para la ordenación. Esto significa que podemos hacer uso de la poderosa sintaxis clave desortdefinir con respecto a qué parte las líneas deben ser uniq.Por el ejemplo,
da el mismo resultado, pero la
sortpieza es más flexible para otros usos.fuente
¡O podría instalar killdupes, mi programa para destruir hasta el último duplicado de efing que hay!
https://github.com/batchmcnulty/killdupes
:-)
fuente