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

ixe*_*013 1 files

我有很多(3000+)个 jpeg 文件,我想要创建日期的年份。我想保留原来的日期,除了应该从 2013 年更改为 2013 年的年份。

我试过touch,只给--date选项的年份:

touch --date 2013 f1219486.jpg
Run Code Online (Sandbox Code Playgroud)

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

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

Rad*_*anu 5

您可以使用-t参数而不是--date. 来自man touch

  -t STAMP
         use [[CC]YY]MMDDhhmm[.ss] instead of current time
Run Code Online (Sandbox Code Playgroud)

现在,您可以STAMP使用下一个命令以您感兴趣的方式获得它:

STAMP=$(stat -c %y f1219486.jpg | \
        awk 'BEGIN {FS="[-]|[:]|[ ]|[.]"} {printf $2$3$4$5"."$6}' | \
        sed -r 's/^/13/g')
Run Code Online (Sandbox Code Playgroud)

一些解释:

  • 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
Run Code Online (Sandbox Code Playgroud)