Как переименовать фотографии из данных EXIF?

824
user2189

У меня есть DCIMкаталог с фотографиями IMG_.JPGс iPhone и DSC_.JPGс Xperia. Этот каталог является результатом объединения нескольких каталогов, в которых были разные фотографии с одинаковыми именами (например, разные фотографии iPhone 3GS .../DCIM/IMG_0001.JPG, iPhone 4S .../DCIM/IMG_0001.JPGи iPhone 5s .../IMG_0001.JPGили Xperia Z3 + перед восстановлением .../DCIM/100ANDRO/DSC_0001.JPGи Xperia Z3 + после восстановления .../DCIM/100ANDRO/DSC_0001.JPGразных фотографий). Чтобы переименовать фотографии, чтобы никто не пошел перезаписаны другой, я искал «дыры» в списке (например, если PIC10.JPGбыл удален с тех пор, но PIC9.JPGи PIC11.JPGдо сих пор здесь, у меня есть отверстие, так что я могу переименовать второй, PIC1.JPGчтобы PIC10.JPGтаким образом я не потерять его и не заканчивайте грязным каталогом, содержащим файлы, выглядящие как двойники по имени).

Я хочу сохранить текущую номенклатуру для фотографий, таких как фотографии iPhone IMG_.JPGи Xperia DSC_.JPG.

Я хочу, чтобы переименовать фотографии в том порядке, они были взяты из данных EXIF (например, если в приведенном выше примере - х, PIC1-2.JPGкоторый пошел PIC10.JPGбыл застрелен, прежде чем PIC1.JPGтогда это PIC10.JPGстановится PIC1.JPGи все последующие фотографии будут переименованы в PIC.JPG, или PIC.JPGесли х фотографии приходят в начале этого списка в) - ставить exifless фотографии на первое место (т. е. первое найденное exifless фото становится PIC1.JPG, второе становится PIC2.JPGetc).

Я не хочу переименовывать фотографии иначе, как с их первоначальной номенклатурой (то есть, нет { Date } iPhone photo.jpgили Xperia photo from { Date }.jpeg).

Есть ли способ сделать это просто? Я предпочел бы получить способ командной строки, чтобы сделать это, но даже сценарий Automator или комбинированный подход (например, сценарий Automator, вызывающий сценарий оболочки) подойдет просто так - до тех пор, пока вещь запускается, у меня нет прикоснуться к клавиатуре, пока работа не будет завершена.

Спасибо.

0
Вы можете использовать Python. Попробуйте [this] (https://gist.githubusercontent.com/meaniruth/9d1d7f4a89534f67970c/raw/2cc81abc6bd0375eef29828cecf7e1d1c51cc8bf/rename_images.py) сценарий. Michael D 8 лет назад 0
Добро пожаловать в Супер пользователя! Обратите внимание, что [SU] не является сервисом написания скриптов. Если вы сообщите нам, что вы уже пробовали (включая сценарии, которые вы используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами. Вам также следует прочитать [Как мне задать хороший вопрос?] (Http://superuser.com/help/how-to-ask). DavidPostill 8 лет назад 0
@MichaelD К сожалению, скрипт переименовывается в `date [8:10] + '-' + date [5: 7] + '-' + date [: 4] + image_format`. Я думаю, что нужны условия, чтобы только увеличивать четырехзначное число на единицу от старшего к новому, но я не уверен, как это написать. Спасибо хоть. user2189 8 лет назад 0
@DavidPostill Привет. Я не пробовал ни одного сценария [кроме ссылки Майкла Д.], поскольку не мог найти сценарий, который выполняет то, что я хочу. Я предполагаю, что вы подразумеваете, что этот пост принадлежит переполнению стека, извините за неправильное место. user2189 8 лет назад 0
@kvpb Где бы вы ни опубликовали, мы ожидаем некоторых усилий. Это также будет закрыто на [так] из-за отсутствия усилий. DavidPostill 8 лет назад 0
@DavidPostill Какой недостаток усилий? Отсутствие усилий, чтобы не вспомнить, как писать такой код, и у меня не было времени искать его, пока я его не решу? Написание этого напоминает мне, что если бы я должен был это сделать, я бы просто ничего не спросил и написал бы это сам. Мой пост ясен, написан для понимания («У меня есть эти кусочки головоломки; я хочу, чтобы головоломка была решена как можно ближе»). Мой пост не менее подробен, чем большинство постов, на которые вы ответили, поэтому при всем моем уважении я попрошу вас оставить такой неуместный комментарий для себя, сэр. user2189 8 лет назад 0
@kvpb "Какой недостаток усилий?" Смотри выше. «Суперпользователь - это не служба написания сценариев. Если вы сообщите нам, что вы уже пробовали (в том числе какие-либо сценарии, которые вы используете) и где вы застряли, мы можем попытаться помочь с конкретными проблемами». Пожалуйста, помните, что мы здесь добровольцы и отвечаем на вопросы в свое свободное время. Если у вас нет времени, чтобы хотя бы попытаться написать сценарий или провести какое-либо исследование, вам следует нанять кого-нибудь для выполнения этой работы. DavidPostill 8 лет назад 0
@kvpb То же самое касается [так]. Если вы зададите свой вопрос там, они ответят точно так же. DavidPostill 8 лет назад 0
@DavidPostill. Я понял, что SuperUser - не то сообщество, которому нужно публиковать это, достаточно одного раза. Теперь, ваш комментарий объясняет пункт за пунктом, что не подходит, я могу ответить вам более конструктивно. Я не упомянул то, что я пытался, потому что я просто не мог найти [после исследования в Google, GitHub, BitBucket и т. Д.] Или написать [просто не имея времени] что-нибудь подходящее. Я знаю, что люди здесь являются волонтерами [награждены очками репутации, позвольте мне подчеркнуть], что подразумевает отсутствие необходимости помогать вообще. Прошу помощи; если кто-то помогает, я благодарю, как могу, если никто не помогает мне слишком плохо. user2189 8 лет назад 0
@DavidPostill Это зависит от ответчика, в то время как я видел, как это происходит при переполнении стека. Но тогда я просто не знаю, что сказать или сделать, потому что кто-то просил что-то с постом, который подробно описывал, не мог решить все сам. Позвольте мне избежать массовых суждений о спекуляциях, но рассмотрим проблему с другой стороны, упомянув это: если люди отвечают только тогда, когда ответ найден, или только исправляют что-то простое, чего не видел первоначальный плакат, те же люди ограничены очевидно, как знание - таким образом, поиск Google может сделать то же самое. : / user2189 8 лет назад 0
@DavidPostill Теперь, это не принадлежит мне, я искал в переполнении стека в день, когда прочитал ваш первый комментарий, и не смог найти ничего подходящего. На сегодняшний день я ясно понял, что мне придется найти руководство по Python и написать его самому - не хватает времени, я пока просто буду переименовывать файлы вручную. Хорошего продолжения. [Редактировать: Конечно, я перечитал свой оригинальный пост, в котором говорится «путь командной строки», а не только «скрипт», поэтому я думаю, что этот пост может иметь отношение как к SuperUser, так и к переполнению стека.] user2189 8 лет назад 0

0 ответов на вопрос

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