Возможно ли найти дубликаты файлов на моем диске, которые по битам идентичны, но имеют разные имена файлов?
files
duplicate-files
ученик
источник
источник
st_size
s, исключив те из них, которые имеют только одно и то же, а затем вычислив только md5sums для сопоставленияst_size
s.Ответы:
fdupes
могу сделать это. Отman fdupes
:В Debian или Ubuntu вы можете установить его с помощью
apt-get install fdupes
. В Fedora / Red Hat / CentOS вы можете установить его сyum install fdupes
. На Arch Linux вы можете использоватьpacman -S fdupes
, а на Gentooemerge fdupes
.Чтобы запустить проверку, исходящую из корня вашей файловой системы, которая, вероятно, займет много времени и памяти, используйте что-то вроде
fdupes -r /
.Как указано в комментариях, вы можете получить самые большие дубликаты, выполнив следующие действия:
Это сломается, если ваши имена файлов содержат переводы строк.
источник
fdupes ....... | xargs ls -alhd | egrep 'M |G '
чтобы сохранить файлы в удобочитаемом формате и только файлы с размером в мегабайтах или гигабайтах. Измените команду в соответствии с реальными результатами.du
конвейерsort
вам скажут.Еще один хороший инструмент
fslint
:В системах на основе Debian вы можете установить его с:
Вы также можете сделать это вручную, если вы не хотите или не можете установить сторонние инструменты. Большинство таких программ работают путем вычисления контрольных сумм файлов . Файлы с одинаковой суммой md5 почти наверняка содержат одинаковые данные. Итак, вы можете сделать что-то вроде этого:
Пример вывода (имена файлов в этом примере одинаковые, но они также будут работать, когда они разные):
Это будет намного медленнее, чем уже упомянутые специальные инструменты, но это будет работать.
источник
st_size
, исключая любые, у которых есть только один файл такого размера, и затем вычисляя md5sums только между файлами с одинаковымst_size
.md5sum {}
наmd5 -q {}
иgawk '{print $1}'
сcat
Краткий ответ: да.
Более длинная версия: взгляните на запись в wikipedia fdupes , она содержит довольно хороший список готовых решений. Конечно , вы можете написать свой собственный, это не что сложно - хэширования программы , такие как
diff
,sha*sum
,find
,sort
иuniq
должен делать эту работу. Вы можете даже поместить это в одну строку, и это все еще будет понятно.источник
Если вы считаете, что хеш-функция (в данном случае MD5) не содержит конфликтов в вашем домене:
Хотите идентичные имена файлов сгруппированы? Напишите простой скрипт
not_uniq.sh
для форматирования вывода:Затем измените
find
команду, чтобы использовать ваш скрипт:Это основная идея. Вероятно, вам следует изменить,
find
если имена ваших файлов содержат несколько символов. (например, пространство)источник
Я подумал добавить недавний улучшенный форк fdupes, jdupes , который обещает быть более быстрым и более функциональным, чем fdupes (например, фильтр размера):
Это рекурсивно найдет дублированные файлы размером более 50 МБ в текущем каталоге и выведет полученный список в myjdups.txt.
Обратите внимание, что выходные данные не отсортированы по размеру, и, поскольку они не встроены, я адаптировал ответ @Chris_Down выше, чтобы добиться этого:
источник
В Википедии была статья ( http://en.wikipedia.org/wiki/List_of_duplicate_file_finders ) со списком доступного программного обеспечения с открытым исходным кодом для этой задачи, но теперь она удалена .
Добавлю, что версия fslint с графическим интерфейсом очень интересна, позволяя использовать маску для выбора файлов для удаления. Очень полезно убирать дублированные фотографии.
В Linux вы можете использовать:
Последние 2 работы на многих системах (Windows, Mac и Linux) Я не проверен на FSLint
источник
Вот мой взгляд на это:
Он отличается тем, что хэширует только первые 1 МБ файла.
Это имеет несколько проблем / особенностей:
Я использую его для сравнения видеоклипов, так что мне этого достаточно.
источник