Изменить год файла, сохранив месяц и день месяца

У меня есть довольно много (более 3000) jpeg-файлов, которые я хотел бы указать в год создания. Я хотел бы сохранить исходную дату, за исключением года, который должен быть изменен с 2013 года.

Я попытался touch, указав только год для опции --date:

touch --date 2013 f1219486.jpg

Год изменился на 2013, но месяц и день изменились на сегодняшний день. Использование -date 20130000 и других вариантов подстановочных знаков не сработало.

Могу ли я коснуться только года файла с помощью касания (или другой команды)?

1
задан 27 December 2013 в 07:19

1 ответ

Вы можете использовать аргумент -t вместо --date. Из man touch:

  -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
0
ответ дан 27 December 2013 в 07:19

Другие вопросы по тегам:

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