Как найти (и удалить) дубликаты файлов
У меня большая музыкальная коллекция, и там есть несколько дубликатов. Есть ли способ найти дубликаты файлов. Как минимум, сделав хеш и увидев, имеют ли два файла одинаковый хеш.
Бонусные баллы за поиск файлов с тем же именем, кроме расширения - я думаю, что у меня есть несколько песен в форматах mp3 и ogg.
Я счастлив использовать командную строку, если это самый простой способ.
12 ответов
Я использую fdupes
за это. Это программа командной строки, которую можно установить из репозиториев с помощью sudo apt install fdupes
, Вы можете назвать это как fdupes -r /dir/ect/ory
и он распечатает список обманщиков. У fdupes также есть простая домашняя страница и статья в Википедии, в которой перечислены еще несколько программ.
Список programs/scripts/bash-solutions
, который может найти дубликаты и запустить под nix
:
- dupedit: сравнивает много файлов одновременно без контрольной суммы. Позволяет избежать сравнения файлов с самими собой, когда несколько путей указывают на один и тот же файл.
- dupmerge: работает на разных платформах (Win32/64 с Cygwin, *nix, Linux и т. д.)
- dupseek: Perl с алгоритмом, оптимизированным для уменьшения числа операций чтения.
- fdf: основан на Perl/c и работает на большинстве платформ (Win32, *nix и, возможно, другие). Использует алгоритмы MD5, SHA1 и другие контрольные суммы
- freedups: сценарий оболочки, который выполняет поиск в указанных вами каталогах. Когда он находит два одинаковых файла, он жестко связывает их вместе. Теперь два или более файлов все еще существуют в своих соответствующих каталогах, но только одна копия данных хранится на диске; обе записи каталога указывают на одинаковые блоки данных.
- fslint: имеет интерфейс командной строки и графический интерфейс.
- liten: инструмент командной строки Pure Python для дедупликации и библиотека, использующая контрольные суммы md5 и новый алгоритм сравнения байтов. (Linux, Mac OS X, * nix, Windows)
- liten2: переписан оригинальный Liten, все еще инструмент командной строки, но с более быстрым интерактивным режимом с использованием контрольных сумм SHA-1 (Linux, Mac OS X, * nix)
- rdfind: один из немногих, которые ранжируют дубликаты на основе порядка входных параметров (сканируемых каталогов), чтобы не удалять из "оригинальных / хорошо известных" источников (если дано несколько каталогов). Использует MD5 или SHA1.
- rmlint: быстрый поиск с интерфейсом командной строки и множеством опций для поиска других ссылок (использует MD5)
- ua: инструмент командной строки Unix/Linux, предназначенный для работы с find (и т.п.).
- findrepe: бесплатный инструмент командной строки на основе Java, предназначенный для эффективного поиска дубликатов файлов, он может выполнять поиск по zip и jar- файлам (GNU / Linux, Mac OS X, * nix, Windows)
- fdupe: небольшой скрипт, написанный на Perl. Делать свою работу быстро и качественно. 1
- ssdeep: идентифицировать практически идентичные файлы, используя кусочно- хешируемый контекстный запуск
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
Если ваша задача дедупликации связана с музыкой, сначала запустите приложение picard, чтобы правильно идентифицировать и пометить вашу музыку (чтобы вы могли найти дубликаты файлов.mp3/.ogg, даже если их имена неверны). Обратите внимание, что picard также доступен в виде пакета Ubuntu.
Что сделано, основываясь на musicip_puid
тег вы можете легко найти все ваши дубликаты песен.
Другой скрипт, который выполняет эту работу - это rmdupe. Со страницы автора:
rmdupe использует стандартные команды linux для поиска дубликатов файлов в указанных папках независимо от имени файла или расширения. Перед удалением дубликатов кандидатов они сравниваются побайтно. rmdupe также может проверять дубликаты по одной или нескольким справочным папкам, может удалять файлы вместо их удаления, позволяет настраивать команду удаления и может ограничивать поиск файлами указанного размера. rmdupe включает режим симуляции, который сообщает, что будет сделано для данной команды, без фактического удаления каких-либо файлов.
Я использую компаратор - sudo apt-get install komparator
( Ubuntu 10.04+) - как GUI-инструмент для поиска дубликатов в ручном режиме.
Для музыки, связанной с дублированием, идентификация и удаление Picard и Jaikoz от http://musicbrainz.org/ является лучшим решением. Jaikoz Я считаю, что автоматически помечает вашу музыку на основе данных файла песни. Вам даже не нужно название песни, чтобы идентифицировать песню и присвоить ей все метаданные. Хотя бесплатная версия может пометить только ограниченное количество песен за один прогон, вы можете запускать ее столько раз, сколько захотите.
Ты пытался
finddup
или же
finddup -l
Я думаю, это работает нормально.
дждупес
я нашелjdupes
очень легко и очень быстро.
jdupes — это программа для выявления дубликатов файлов и выполнения действий над ними, таких как удаление, жесткое связывание, символическое связывание и дедупликация на уровне блоков (также известная как «дедупликация» или «рефлинк»). Это быстрее, чем большинство других сканеров дубликатов. Он отдает приоритет безопасности данных над производительностью, а также предоставляет опытным пользователям доступ к расширенным (а иногда и опасным) функциям.
# Search a single directory:
jdupes path/to/directory
# Search multiple directories:
jdupes directory1 directory2
# Search all directories recursively:
jdupes --recurse path/to/directory
# Search directory recursively and let user choose files to preserve:
jdupes --delete --recurse path/to/directory
# Search multiple directories and follow subdirectores under directory2, not directory1:
jdupes directory1 --recurse: directory2
# Search multiple directories and keep the directory order in result:
jdupes -O directory1 directory2 directory3
# EXclude files over 1M, sumarize info, recursive
jdupes -X size+=:1000k --summarize --recurse ~
dupeGuru имеет специальный режим для музыки. Это кроссплатформенная программа с графическим интерфейсом, и на сегодняшний день (февраль 2021 г.) она находится в активной разработке , хотя неясно, какие выпуски работают на каких системах. Проверьте его документацию .
Если вместо этого вас устраивает инструмент с графическим интерфейсом, я настоятельно рекомендую Czkawka . Вы можете очень легко найти дубликаты файлов, отфильтровать нужные файлы (по умолчанию они сгруппированы) и удалить ненужные файлы. Кроме того, поиск очень быстрый и кэшируется, поэтому в следующий раз, когда вы его запустите, он будет еще быстрее.
https://github.com/qarmin/czkawka
Вы можете легко установить его в любой дистрибутив, например, скачать его здесь, на Flathub.
И если вы настаиваете на использовании инструмента CLI, само программное обеспечение также может быть запущено как инструмент CLI .
Кроме того, похоже, что он работает и в Windows или около того.
Теперь, когдаfslint
больше не поддерживается, я перешел на fclones. По запросу он сопоставляется по хешу и может выводить список или заменять файлы жесткими или программными ссылками.
Я использовал его для замены дубликатов файлов жесткими ссылками:
fclones group <dir/to/recursively/search> | fclones link