У меня есть довольно много (более 3000) jpeg-файлов, которые я хотел бы указать в год создания. Я хотел бы сохранить исходную дату, за исключением года, который должен быть изменен с 2013 года.
Я попытался touch
, указав только год для опции --date
:
touch --date 2013 f1219486.jpg
Год изменился на 2013, но месяц и день изменились на сегодняшний день. Использование -date 20130000
и других вариантов подстановочных знаков не сработало.
Могу ли я коснуться только года файла с помощью касания (или другой команды)?
Вы можете использовать аргумент -t
вместо --date
. Из man touch
:
blockquote>-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
Теперь вы можете получить
STAMP
так, как вам интересно, используя следующую команду:STAMP=$(stat -c %y f1219486.jpg | \ awk 'BEGIN {FS="[-]|[:]|[ ]|[.]"} {printf $2$3$4$5"."$6}' | \ sed -r 's/^/13/g')
Some Пояснения:
stat -c %y f1219486.jpg
вернет время последней модификацииf1219486.jpg
awk 'BEGIN {FS="[-]|[:]|[ ]|[.]"} {printf $2$3$4$5"."$6}'
изменит вывод предыдущей команды в этом формате:MMDDhhmm.ss
[ 1115]sed -r 's/^/13/g'
добавит13
(текущий год) передMMDDhhmm.ss
И теперь вы можете изменить только год вашего файла:
touch -t $STAMP f1219486.jpg