@greenorangeblue

Как в разных папках найти дубли фотографий и переместить их в одну другую папку?

Нужно найти дубли фотографий
Переместить их в одну другую папку
Чтобы как-бы отчистить папки от дублей, но не удаляя их
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
3r1k
@3r1k
the quieter you become, the more you hear
Я частенько прибегаю к помощи вот этой программки, помогает сортировать и находить дубликаты музыки, фото и документов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@alexandrsemen4ukk
С помощью скриптов автоматизации, например на питоне. Ну или ручками.

Полный дубль можно определить только по хэшу, что глазами и руками не определить. Так что скорее всего придётся искать софт или писать его самому )
Ответ написан
Комментировать
gedev
@gedev
сисадмин-энтузиаст
Как уже сказали, можно сравнивать файлы по хэшу и самому писать велосипеды, но вот здесь есть готовая утилита, которая умеет искать дубли: https://github.com/pkolaczk/fclones

Пример:
fclones group -f json -o duplicates.json /путь
Выплюнет следующего вида JSON:
spoiler

{
  "header": {
    "version": "0.27.3",
    "timestamp": "2022-09-15T19:14:53.719409270+03:00",
    "command": [
      "/snap/fclones/19/bin/fclones",
      "group",
      "-f",
      "json",
      "."
    ],
    "base_dir": "/root/clones",
    "stats": {
      "group_count": 2,
      "total_file_count": 4,
      "total_file_size": 1256780,
      "redundant_file_count": 2,
      "redundant_file_size": 628390,
      "missing_file_count": 0,
      "missing_file_size": 0
    }
  },
  "groups": [
    {
      "file_len": 497684,
      "file_hash": "3181bc6f0fecd38df0199d60e1189ba7",
      "files": [
        "/root/clones/IMG_20181016_045456 (copy).jpg",
        "/root/clones/IMG_20181016_045456.jpg"
      ]
    },
    {
      "file_len": 130706,
      "file_hash": "5836d61ea4da8a05efb3870bdeed4028",
      "files": [
        "/root/clones/b3904388-decb-47b7-920c-36208ab8c201 (copy).jpg",
        "/root/clones/b3904388-decb-47b7-920c-36208ab8c201.jpg"
      ]
    }
  ]
}


Оттуда уже можно взять имена дубликатов и что-то с ними сделать. Можно на Python что-то подобное:
import os
import json
import shutil


source_data = 'd.json'  # исходный JSON
dest = 'duplicates'  # директория назначения

with open(source_data, 'r') as data:
    dup = json.loads(data.read())

duplicates = []
for group in dup['groups']:
    for file in group['files']:
        duplicates.append(file)

for file in duplicates:
    if os.path.isfile(file):
        shutil.move(file, dest)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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