В unixoid системах вы можете использовать find + ImageMagick для определения каждого файла и даты его создания. Обычно ImageMagick должен быть установлен:
find -name "*.jpg" -execdir identify -verbose {} ";" -ls | egrep "(create|^Image)"
Image: ./logo-text-u-sinn.4.2.do.jpg
date:create: 2011-08-03T12:16:55+02:00
Image: ./tasten-in-tasse_3919.jpg
date:create: 2011-06-14T22:37:07+02:00
gnu: find также доступна для Windows, но обычно не распространяется Microsoft. Вместо этого у Microsoft есть собственный, более низкий (afaik) тип поиска (.exe) с совершенно другим синтаксисом.
Так что если вы устанавливаете gnu-find, он должен вызываться по всему пути или, например, переименовываться в gfind, чтобы предотвратить конфликт имен.
Я бы написал маленький скрипт
#!/bin/bash
name=$1
dt=$(identify -verbose $name grep "create:")
datetime=${dt/*create:/}
mv $name $datetime.jpg
, который уязвим для имен файлов, включая пробелы, но если ваши файлы всегда имеют имя 0001.jpg и т. Д., Это не будет проблемой.
Сценарий выдаст, например, 2011-08-03T12:39:42+02:00
в качестве имени файла и может быть вызван командой find:
find -name "*.jpg" -execdir ./myscript.sh {} ";"
Если вы не используете / не используете bash, вам необходимо соответствующим образом изменить его.
Внимание:
Вы должны быть осторожны. Если время 2 или более файлов совпадает, они будут переопределены без уведомления. Конечно, вы можете встроить проверку в ваш скрипт, и, возможно, ваша файловая система сможет хранить дату более точно, чем в секундах.