更改文件的年份,保留月份和日期

更改文件的年份,保留月份和日期

我有相当多的 (3000+) jpeg 文件,我想将其改为创建日期的年份。我想保留原始日期,但年份应改为 2013 年。

我尝试过touch,只给选项提供年份--date

touch --date 2013 f1219486.jpg

年份改为 2013,但月份和日期改为今天。使用-date 20130000和其他通配符变体不起作用。

我可以使用 touch (或其他命令)仅触摸文件的年份吗?

答案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')

一些解释:

  • stat -c %y f1219486.jpg将返回最后修改时间f1219486.jpg
  • awk 'BEGIN {FS="[-]|[:]|[ ]|[.]"} {printf $2$3$4$5"."$6}'将以这种格式更改上一个命令的输出:MMDDhhmm.ss
  • sed -r 's/^/13/g'13在前面添加(当前年份)MMDDhhmm.ss

现在您只能更改文件的年份:

touch -t $STAMP f1219486.jpg

相关内容