Как найти (и удалить) дубликаты файлов

У меня большая музыкальная коллекция, и там есть несколько дубликатов. Есть ли какой-нибудь способ найти дубликаты файлов? Как минимум, выполнив хэш и проверив, имеют ли два файла одинаковый хэш.

Бонусные баллы за то, что вы также находите файлы с таким же именем, кроме расширения - я думаю, что у меня есть несколько песен как в формате mp3, так и в формате ogg.

Я с удовольствием использую командную строку, если это самый простой способ.

Я использую fdupes за это. Это программа командной строки, которая может быть установлена из репозиториев с sudo apt install fdupes. Вы можете назвать это так fdupes -r /dir/ect/ory и он распечатает список обманутых. fdupes также имеет простая домашняя страница и в Статья в Википедии, в котором перечислены еще несколько программ.

FSlint имеет графический интерфейс и некоторые другие функции. Объяснение алгоритма проверки дубликатов из их часто задаваемых вопросов:

1. exclude files with unique lengths2. handle files that are hardlinked to each other3. exclude files with unique md5(first_4k(file))4. exclude files with unique md5(whole file)5. exclude files with unique sha1(whole file) (in case of md5 collisions).

инструкции по установке fslint

Список из programs/scripts/bash-solutions, который может находить дубликаты и работать под nix:

  1. обманутый: Сравнивает сразу много файлов без контрольной суммы. Позволяет избежать сравнения файлов с самими собой, когда несколько путей указывают на один и тот же файл.
  2. дюпмерж: работает на различных платформах (Win32/64 с Cygwin, *nix, Linux и т.д.)
  3. дурачок: Perl с алгоритмом, оптимизированным для уменьшения количества операций чтения.
  4. fdf: Основан на Perl/c и работает на большинстве платформ (Win32, *nix и, возможно, другие). Использует MD5, SHA1 и другие алгоритмы контрольной суммы
  5. высвобождения: сценарий оболочки, который выполняет поиск по указанным вами каталогам. Когда он находит два одинаковых файла, он жестко связывает их вместе. Теперь два или более файлов по-прежнему существуют в соответствующих каталогах, но на диске хранится только одна копия данных; обе записи каталога указывают на одни и те же блоки данных.
  6. fslint: имеет интерфейс командной строки и графический интерфейс.
  7. маленький: Чистый инструмент командной строки дедупликации Python и библиотека, использующие контрольные суммы md5 и новый алгоритм сравнения байтов. (Linux, Mac OS X, *nix, Windows)
  8. литен2: Перезапись оригинального Liten, по-прежнему являющегося инструментом командной строки, но с более быстрым интерактивным режимом, использующим контрольные суммы SHA-1 (Linux, Mac OS X, *nix)
  9. rdfind: Один из немногих, который ранжирует дубликаты на основе порядка входных параметров (каталогов для сканирования), чтобы не удалять в "оригинальных / хорошо известных" источниках (если указано несколько каталогов). Использует MD5 или SHA1.
  10. rmlint: Быстрый поисковик с интерфейсом командной строки и множеством опций для поиска других линтов (использует MD5), поскольку 18.04 LTS имеет rmlint-gui пакет с графическим интерфейсом (может быть запущен с помощью rmlint --gui или из настольного лаунчера с именем Измельчитель Для поиска дубликатов)
  11. ua: Инструмент командной строки Unix /Linux, предназначенный для работы с find (и тому подобным).
  12. найди способ: бесплатный инструмент командной строки на основе Java, предназначенный для эффективного поиска дубликатов файлов, он может выполнять поиск в zip-архивах и jar-файлах.(GNU/Linux, Mac OS X, *nix, Windows)
  13. fdupe: небольшой скрипт, написанный на Perl. Делает свою работу быстро и эффективно.1
  14. ssdeep: идентификация почти идентичных файлов с помощью кусочного хэширования, инициируемого контекстом.

Если ваша задача дедупликации связана с музыкой, сначала запустите пикард приложение для правильной идентификации и пометки вашей музыки (чтобы вы могли находить дубликаты файлов .mp3 /.ogg, даже если их имена неверны). Обратите внимание, что picard также доступен в виде пакета Ubuntu.

Это сделано на основе musicip_puid по тегу вы можете легко найти все ваши повторяющиеся песни.

Другой сценарий, который выполняет эту работу, - это rmdupe. Со страницы автора:

rmdupe использует стандартные команды Linux для поиска дубликатов файлов в указанных папках, независимо от имени файла или расширения. Перед удалением повторяющихся кандидатов они сравниваются байт за байтом. rmdupe также может проверять дубликаты в одной или нескольких ссылочных папках, может удалять файлы в корзину вместо их удаления, позволяет использовать пользовательскую команду удаления и может ограничить поиск файлами указанного размера. rmdupe включает режим моделирования, который сообщает, что будет сделано для данной команды, фактически не удаляя никаких файлов.

Я использую компаратор - sudo apt-get install komparator (Ubuntu 10.04+ ) - как графический интерфейс-инструмент для поиска дубликатов в ручном режиме.

Для идентификации и удаления дубликатов, связанных с музыкой, Picard и Jaikoz по http://musicbrainz.org/ это лучшее решение. Jaikoz, я полагаю, автоматически помечает вашу музыку на основе данных файла песни. Вам даже не нужно название песни, чтобы она идентифицировала песню и присвоила ей все метаданные. Хотя бесплатная версия может отмечать только ограниченное количество песен за один прогон, но вы можете запускать ее столько раз, сколько захотите.

Вы пробовали

finddup

или

finddup -l

Я думаю, это прекрасно работает.

дупеГуру имеет специальный режим для воспроизведения музыки. Это кроссплатформенная программа с графическим интерфейсом, и по состоянию на сегодняшний день (февраль 2021 года) она находится в активном развитие, хотя неясно, какие релизы работают на каких системах. Проверьте его документация.