поиск дублирующихся фотографий

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

1
задан 24 October 2014 в 08:29

4 ответа

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

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

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

cd /path/to/FolderB

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

Шаг 4: Теперь CD к Вашему следующему исходному каталогу (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"/ \;.

1
ответ дан 7 December 2019 в 12:49

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

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

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

1
ответ дан 10 November 2019 в 09:21

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

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

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

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

1
ответ дан 10 November 2019 в 09:21

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

  • переходят к родительской папке A, B, поиск C
  • .jpg (или расширение файла Ваших изображений: .png, .gif...)
  • вид в алфавитном порядке (удостоверяются, что просмотрели sourcepath файла)
  • удаляет дубликаты файлов, в которых Вы больше не нуждаетесь
0
ответ дан 10 November 2019 в 09:21

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

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