Então, eu estou verificando o md5
hash dos meus arquivos com isso como minha saída:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
657cf4512a77bf47c39a0482be8e41e0 ./dupes.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
No entanto, depois de executar find . -type f -exec md5sum '{}' ';' | uniq -w 33
para encontrar os hashes exclusivos, recebo o seguinte:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
No meu entendimento, apenas um dos quer derpina.txt
ou derp.txt
deve estar aparecendo uma vez que seus hashes são os mesmos. Estou esquecendo de algo? Alguém pode me esclarecer o porquê de resultados como este?
command-line
bash
uniq
user2127726
fonte
fonte
Respostas:
Você precisa usar
sort
antesuniq
:uniq
remove apenas linhas repetidas. Não reordena as linhas procurando repetições.sort
faz essa parte.Isso está documentado em
man uniq
:fonte
uniq
deve ser alternativo, comosort -u
padrão em todos os sistemas. Se necessário, ele sempre precisa de "classificação" para funcionar corretamente.uniq
possui muitos recursos não disponíveis nosort -u
. Além disso, há casos em que se deseja usaruniq
semsort
.A entrada para
uniq
precisa ser classificada. Então, para o caso de exemplo,podia funcionar. O
-w
(--check-chars=N
) torna as linhas exclusivas apenas em relação à primeira coluna; Esta opção funciona para este caso. mas as possibilidades de especificar as partes relevantes da linhauniq
são limitadas. Por exemplo, não há opções para especificar o trabalho em algumas colunas 3 e 5, ignorando a coluna 4.O comando
sort
tem uma opção para as próprias linhas de saída exclusivas, e as linhas são exclusivas em relação às chaves usadas para classificação. Isso significa que podemos fazer uso da poderosa sintaxe da chavesort
para definir em qual parte as linhas devem ser uniq.Por exemplo,
fornece apenas o mesmo resultado, mas a
sort
peça é mais flexível para outros usos.fonte
Ou você pode instalar killdupes, meu programa para destruir todas as duplicatas mais eficientes que existem!
https://github.com/batchmcnulty/killdupes
:-)
fonte