поиск дубликатов фотографий

поиск дубликатов фотографий

У меня есть фотографии, в папке A, они также существуют в папках B и C. У них одинаковые имена файлов. Как их искать и удалять из папки A? Скрипт perl или что-то в этом роде было бы идеально, так как я не люблю загружать программное обеспечение для этой задачи.

решение1

Попробуйте эту команду:

find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;

Как использовать?

Шаг 1:Создайте временный каталог для перемещения в него дубликатов файлов:

ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"

Шаг 2:Укажите destdirпапку FolderA, из которой мы хотим удалить дубликаты фотографий.

destdir=/path/to/FolderA

Шаг 3Перейдите в свой первый исходный каталог (FolderB) и выполните команду

cd /path/to/FolderB

find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;

Шаг 4:Теперь перейдите в следующий исходный каталог (FolderC) и снова выполните команду

cd /path/to/FolderC

find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;

Хорошо. Теперь, если вы протестируете команду и увидите результат, удалите команду echoдля перемещения дубликатов фотографий в /tmp/ToDeleteкаталог.

Смотрите тест ниже:

$ ls ~/FolderA    
  1.jpg  2.jpg  6.jpg  7.jpg  8.jpg

$ ls ~/FolderB    
  3.jpg  4.jpg  5.jpg  7.jpg  8.jpg  9.jpg

$ ls ~/FolderC
  6.jpg  7.jpg  8.jpg  9.jpg

$ ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"
$ ls /tmp/ToDelete/
$ destdir=~/FolderA

$ cd ~/FolderB
/FolderB$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
  ‘/home/Fischer/FolderA/./8.jpg’ -> ‘/tmp/ToDelete/8.jpg’
  removed ‘/home/Fischer/FolderA/./8.jpg’
  ‘/home/Fischer/FolderA/./7.jpg’ -> ‘/tmp/ToDelete/7.jpg’
  removed ‘/home/Fischer/FolderA/./7.jpg’

/FolderB$ cd ~/FolderC
/FolderC$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
  ‘/home/Fischer/FolderA/./6.jpg’ -> ‘/tmp/ToDelete/6.jpg’
  removed ‘/home/Fischer/FolderA/./6.jpg’

/FolderC$ ls /tmp/ToDelete/
  6.jpg  7.jpg  8.jpg

/FolderC$ ls -l ~/FolderA
  1.jpg  2.jpg

/FolderC$ C00L ;)

И как это работает?

Когда вы переключаетесь в папку FolderB или FolderC и запускаетенайти команду, поэтому вы ищете любой файл в нем ( .ссылаясь на текущий каталог), а затем с помощьюкоманда cmp(используется для побайтового сравнения двух файлов) вы сравниваете каждый файл( {}) в FolderB/FolderC с файлами в destdir(FolderA( $destdir/{})), если они одинаковы, то мы перемещаем этот файл(из FolderA во временный каталог в /tmp/ToDelete) со следующимкоманда mv -exec mv "$destdir/{}" "$ToDelete"/ \;.

решение2

Программаfindimagedupesдолжен сделать то, что вы просите:

Находит визуально похожие или дублирующиеся изображения

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

решение3

вы можете использовать программу fslint

он ищет дубликаты (помимо прочего)

fslint можно загрузить в центре программного обеспечения. fslint имеет пользовательский интерфейс. Когда вы открываете программу, первая вкладка посвящена поиску дубликатов. Вы можете указать папку/папки.

Дополнительная информация :руководство пользователя fslint

решение4

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

Выполните поиск в Google, используя лучшие фразы для поиска дубликатов фотографий, чтобы выяснить, что доступно, и найти тот, который соответствует вашим потребностям.

Связанный контент