Как найти ТОЛЬКО дубликаты файлов с разными именами?

FSlint может найти дубликаты файлов. Но предположим, что у вас есть 10 000 песен или изображений и хочет найти ТОЛЬКО те файлы, которые идентичны, но имеют разные имена? Прямо сейчас, я получаю список, который содержит сотни обманов (в разных папках). Я хочу, чтобы имена были согласованными, поэтому я хочу видеть только идентичные файлы с разными именами, а не одинаковые файлы с тем же именем.

Может ли FSlint с расширенными параметрами (или другой программой) выполнить это?

1
задан 10 February 2016 в 23:06

2 ответа

Если вы в порядке, что сценарий печатает все повторяющиеся файлы с одинаковыми и разными именами файлов, вы можете использовать эту командную строку:

find . -type f -exec sha256sum {} \; | sort | uniq -w64 --all-repeated=separate | cut -b 67-

Для запуска примера я использую следующую структуру каталогов , Файлы с похожим именем (и другим номером) имеют одинаковое содержимое:

.
├── dir1
│   ├── uname1
│   └── uname3
├── grps
├── lsbrelease
├── lsbrelease2
├── uname1
└── uname2

А теперь посмотрим, как наша команда совершает магию:

$ find . -type f -exec sha256sum {} \; | sort | uniq -w64 --all-repeated=separate | cut -b 67-
./lsbrelease
./lsbrelease2

./dir1/uname1
./dir1/uname3
./uname1
./uname2

Каждая группа, разделенная новой строкой состоит из файлов с равным содержимым. Не дублирующиеся файлы не указаны.

9
ответ дан 23 May 2018 в 13:41
  • 1
    Очень приятно, но некоторые файлы (одни и те же) - поочередно - появляются 5-10 раз подряд. – Jacob Vlijm 8 February 2016 в 13:01
  • 2
    @JacobVlijm Что именно вы имеете в виду? Для меня всегда один файл в строке ... – Byte Commander 8 February 2016 в 13:02
  • 3
    @ByteCommander waitwait, это не тот же файл !! (разные резервные копии). +1 Отлично, просто отлично. Собираюсь использовать его в моем каталоге фотографий :) – Jacob Vlijm 8 February 2016 в 13:06
  • 4
    @JacobVlijm Если вам нравится этот ответ, вы love мой второй! : D – Byte Commander 8 February 2016 в 15:40

Отличный скрипт Byte Commander работал, но не дал мне совершенно необходимого мне поведения (перечисление всех дубликатов файлов, содержащих хотя бы одно имя с другим именем). Я сделал следующее изменение, и теперь он отлично работает для моих целей (и спас меня TON времени)! Я изменил строку 160 на:

args.name_filter == "d" and len(filenames[filename]) >= 1 and len(filenames[filename]) != len(hashes[filehash]))

1
ответ дан 23 May 2018 в 13:41

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

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