Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Кстати, файловые дескрипторы лучше закрывать в Finally
[=exif.DateOriginal.Y-M-D] [=exif.TimeOriginal.h.m.s]2013-04-25 10.53.11.jpg, которые отлично сортируют фотографии по времени съёмки и позволяют по названию определить дату и времяConsole.WriteLine("Обрабатываем файл: {0}", fInf.Name);
#!/bin/sh
BASEDIR="/share/photos"
LIST=`find . -iname "*.jpg"`
STRTIME="Image timestamp"
for F in $LIST; do
YEAR=`exiv2 "$F" | grep "${STRTIME}" | awk '{ print $4 }' | awk -F: '{ print $1 }'`
MONTH=`exiv2 "$F" | grep "${STRTIME}" | awk '{ print $4 }' | awk -F: '{ print $2 }'`
DAY=`exiv2 "$F" | grep "${STRTIME}" | awk '{ print $4 }' | awk -F: '{ print $3 }'`
NAME=`basename "$F"`
DIR="${BASEDIR}/${YEAR}/${MONTH}/$DAY"
mkdir -p ${DIR}
mv -f ${F} "${DIR}/${NAME}"
done
#!perl
use 5.01;
my @filelist = glob("*");
@filelist = grep (/(jpg$|png$|gif$)/i, @filelist);
for (@filelist) {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime((stat($_))[9]);
$year += 1900;
$mon += 1;
/(\.[^.]*)$/;
my $name = sprintf "%4d-%02d-%02d_%02d%02d%02d%s",$year,$mon,$mday,$hour,$min,$sec,$1;
say "$_ -> $name";
rename $_, $name;
}
Изменение даты файла согласно EXIF