Таким образом, я проверяю md5
хеш моих файлов с этим как мой вывод:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
657cf4512a77bf47c39a0482be8e41e0 ./dupes.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
Однако после выполнения find . -type f -exec md5sum '{}' ';' | uniq -w 33
для нахождения уникальных хешей, я получаю это:
657cf4512a77bf47c39a0482be8e41e0 ./dupes2.txt
8d60a927ce0f411ec94ac26a4785f749 ./derpina.txt
15f63928b8a1d5337137c38b5d66eed3 ./foo.txt
8d60a927ce0f411ec94ac26a4785f749 ./derp.txt
От моего понимания, только одного из также derpina.txt
или derp.txt
должен обнаруживаться, так как их хеши являются тем же. Я пропускаю что-то? Кто-либо может просветить меня относительно того, почему это производит как это?
Необходимо использовать sort
прежде uniq
:
find . -type f -exec md5sum {} ';' | sort | uniq -w 33
uniq
только удаляет повторенные строки. Это не переупорядочивает строки, ища повторения. sort
вносит свой вклад.
Это документируется в man uniq
:
Примечание: 'uniq' не обнаруживает повторенные строки, если они не смежны. Можно хотеть отсортировать вход сначала или использование
sort -u' without
uniq'.
Вход для uniq
потребности, которые будут отсортированы. Таким образом для случая в качестве примера,
find . -type f -exec md5sum '{}' ';' | sort | uniq -w 33
работал бы. -w
(--check-chars=N
) делает строки уникальными только относительно первого столбца; Эта опция работает на этот случай. но возможности определить соответствующие части строки для uniq
ограничены. Например, нет никаких опций определить работу над некоторым столбцом 3 и 5, игнорируя столбец 4.
, команда sort
имеет опцию для уникальных выходных строк саму, и строки уникальны относительно ключей, используемых для сортировки. Это означает, что мы можем использовать мощный ключевой синтаксис sort
для определения, относительно которого отделяются, строки должны быть uniq.
Для примера,
find . -type f -exec md5sum '{}' ';' | sort -k 1,1 -u
дает просто тот же результат, но sort
часть более гибка для другого использования.
Или Вы могли установить killdupes, моя программа для уничтожения каждого последнего дубликата effing существует!
https://github.com/batchmcnulty/killdupes
:-)