Así que estoy revisando el md5
hash 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 33
para 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.txt
o derp.txt
deberí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
sort
antesuniq
:uniq
solo elimina líneas repetidas. No reordena las líneas buscando repeticiones.sort
hace esa parteEsto está documentado en
man uniq
:fuente
uniq
debe tener un alias comosort -u
predeterminado en todos los sistemas. Si es que siempre necesita "ordenar" para que funcione correctamente.uniq
tiene muchas características que no están disponibles consort -u
. Además, hay casos en los que uno quiere usaruniq
sin élsort
.La entrada para
uniq
necesita 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íneauniq
son limitadas. Por ejemplo, no hay opciones para especificar el trabajo en algunas columnas 3 y 5, ignorando la columna 4.El comando
sort
tiene 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 desort
definir con respecto a qué parte las líneas deben ser uniq.Por el ejemplo,
da el mismo resultado, pero la
sort
pieza 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