Итак, я проверяю 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
должен отображаться, поскольку их хэши одинаковы. Я что-то пропустил? Может кто-нибудь просветить меня, почему это выводит, как это?
command-line
bash
uniq
user2127726
источник
источник
Ответы:
Вы должны использовать
sort
передuniq
:uniq
удаляет только повторяющиеся строки Он не переупорядочивает строки в поисках повторов.sort
делает эту часть.Это задокументировано в
man uniq
:источник
uniq
должен быть псевдонимомsort -u
по умолчанию во всех системах. Если это вообще нужно, всегда нужно «сортировать», чтобы он работал правильно.uniq
имеет много функций, недоступных сsort -u
. Также бывают случаи, когда хочется использоватьuniq
безsort
.Вход для
uniq
должен быть отсортирован. Так что для примера,должно сработать.
-w
(--check-chars=N
) Делает линии уникальными только в отношении первого столбца; Эта опция работает для этого случая. но возможности указать соответствующие части линииuniq
ограничены. Например, нет опций для указания работы с некоторыми столбцами 3 и 5, игнорируя столбец 4.У команды
sort
есть опция для уникальных строк вывода, а строки уникальны относительно ключей, используемых для сортировки. Это означает, что мы можем использовать мощный синтаксис ключа,sort
чтобы определить, в какой части строки должны быть уникальными.Например,
дает точно такой же результат, но
sort
часть более гибкая для других целей.источник
Или вы можете установить killdupes, мою программу, чтобы уничтожить все, что есть!
https://github.com/batchmcnulty/killdupes
:-)
источник