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

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

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

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

143
задан 22 April 2014 в 17:41

8 ответов

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

156
ответ дан 22 April 2014 в 17:41

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

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

7
ответ дан 22 April 2014 в 17:41

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

3
ответ дан 22 April 2014 в 17:41

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

1. exclude files with unique lengths
2. handle files that are hardlinked to each other
3. 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 Install fslint

65
ответ дан 22 April 2014 в 17:41

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

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

5
ответ дан 22 April 2014 в 17:41

Вы пробовали

finddup

или

finddup -l

, думаю, все работает нормально.

3
ответ дан 22 April 2014 в 17:41

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

3
ответ дан 22 April 2014 в 17:41

Список программ / скриптов / bash-решений , которые могут находить дубликаты и запускаться под nix :

  1. dupedit : сравнивает сразу несколько файлов без контрольной суммы. Избегает сравнения файлов с самими собой, когда несколько путей указывают на один и тот же файл.
  2. dupmerge : работает на разных платформах (Win32 / 64 с Cygwin, * nix, Linux и т. Д.)
  3. dupseek : Perl с алгоритм оптимизирован для уменьшения количества операций чтения.
  4. fdf : основан на Perl / c и работает на большинстве платформ (Win32, * nix и, возможно, на других). Использует MD5, SHA1 и другие алгоритмы контрольной суммы
  5. freedups : сценарий оболочки, который просматривает указанные вами каталоги. Когда он находит два одинаковых файла, он жестко связывает их вместе. Теперь два или более файла все еще существуют в своих соответствующих каталогах, но на диске хранится только одна копия данных; обе записи каталога указывают на одни и те же блоки данных.
  6. fslint : имеет интерфейс командной строки и графический интерфейс.
  7. liten : Инструмент командной строки дедупликации на чистом Python и библиотека, использующая контрольные суммы md5 и новый байт алгоритм сравнения. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : Переписанный исходный Liten, все еще инструмент командной строки, но с более быстрым интерактивным режимом с использованием контрольных сумм SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : один из немногих, который ранжирует дубликаты на основе порядка входных параметров (каталоги для сканирования), чтобы не удалять их в «исходных / хорошо известных» источниках (если указано несколько каталогов) . Использует MD5 или SHA1.
  10. rmlint : Быстрый поиск с интерфейсом командной строки и множеством опций для поиска других линтов (также использует MD5), так как 18.04 LTS имеет пакет rmlint-gui с графическим интерфейсом (может быть запущен с помощью rmlint --gui или из настольной программы запуска с именем Shredder Duplicate Finder )
  11. ua : инструмент командной строки Unix / Linux, предназначенный для работы с помощью find (и т. п.).
  12. findrepe : бесплатный инструмент командной строки на основе Java, разработанный для эффективного поиска дублирующихся файлов, он может выполнять поиск в архивах и архивах (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : небольшой скрипт, написанный на Perl. Выполняет свою работу быстро и эффективно. 1
  14. ssdeep : определение почти идентичных файлов с помощью кусочного хеширования, инициируемого контекстом
63
ответ дан 22 April 2014 в 17:41

Другие вопросы по тегам:

Похожие вопросы: