Проверьте, какие файлы в папке отсутствуют в другой папке?

При копировании фотографий от переменных источников до моего основного архива я хотел бы скопировать только файлы, которые уже не находятся в архиве. rsync или подают сравнение заявок как WinMerge, и Комбинация, может казаться, не проверяет, существует ли файл уже с другим именем или в другой подпапке. Сначала копирование всех новых исходных изображений в архив, затем удаление дубликатов и затем организация файлов, кажется, дополнительная работа.

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

2
задан 28.09.2014, 20:55

3 ответа

Использовать find с md5sum для получения контрольных сумм для всех файлов в источнике и месте назначения затем используйте comm найти контрольные суммы, отсутствующие от места назначения.

Или Вы могли попробовать -y опция rsync.

2
ответ дан 11.12.2019, 22:35

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

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

for orig in *.jpg; do
  canon=$(<"$orig" md5sum | sed 's/ .*//').jpg
  mv -i "$orig" "$canon"
  ln -s "$canon" "$orig"
done

Это предполагает, что Ваш архив является единственным каталогом. Если будут подкаталоги, то необходимо будет измениться *.jpg кому: **/*.jpg (требует удара 4 или zsh), и расположение для добавления правильной суммы ../ к ln команда.

После того, как этот rsync скопирует только содержание и название новых фотографий и новые названия существующих фотографий.

Если можно переименовать файлы только в архиве, можно все еще расположить что-то с умным использованием символьных ссылок и вероятно rsync --copy-unsafe-links.

Если файлы только визуально подобны, это более сложно, и не может быть полностью автоматизированного ответа (между обрезанной версией и низкокачественной версией, человек должен сделать выбор). Некоторые инструменты для сравнения визуально подобных изображений могут помочь, например, (интерактивный) gqview или findimagedupes (командная строка).

Обратите внимание, что, так как Вы не указываете свою операционную систему, я сделал предложения той работой над моей. Они будут работать над любой подобной Unix системой, включая OSX и Cygwin. Идея символьной ссылки будет также работать исходно над Windows XP и более новый (возможно, еще ранее), но требует устанавливающих дополнительных инструментов.

0
ответ дан 11.12.2019, 22:35

Целое "другое имя или в другой подпапке" вещь могло бы быть немного странным для выяснения... Уверенный можно сделать, делают хеш выдерживает сравнение, но поскольку целевой каталог растет, время, чтобы сделать, слияние увеличится.

Это не очень необычно, но что относительно того, чтобы использовать что-то как Robocopy для Windows?

robocopy /E source destination
0
ответ дан 11.12.2019, 22:35

Теги

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