У меня есть фотографии в папке A, они также существуют в папках B и C. У них есть те же имена файлов. Как искать их и удалить их из папки A? Сценарий жемчуга или что-то были бы идеальны, так как мне не нравится загружать программное обеспечение для этой задачи.
Попробуйте эту команду:
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"/ \;
.
Программа findimagedupes должна сделать то, что Вы запрашиваете:
Находит визуально подобные или дублирующиеся изображения
, программа является простой программой жемчуга и может быть запущена из командной строки - но также доступна как пакет программного обеспечения.
Вы могли использовать программу fslint
, она ищет дубликаты (среди прочего)
, fslint может быть загружен в центре программного обеспечения. fslint имеет пользовательский интерфейс при открытии программы первая вкладка о нахождении дубликата. можно определить папку/папки.
[еще 114] информация: руководство пользователя fslint
если это - небольшое количество фотографий, Вы могли бы использовать наутилус, или другой файловый менеджер