我有很多(3000+)个 jpeg 文件,我想要创建日期的年份。我想保留原来的日期,除了应该从 2013 年更改为 2013 年的年份。
我试过touch,只给--date选项的年份:
touch --date 2013 f1219486.jpg
Run Code Online (Sandbox Code Playgroud)
年份改为2013,但月日改为今天。使用-date 20130000和其他通配符变体不起作用。
我可以使用 touch(或其他命令)只触摸文件的年份吗?
您可以使用-t参数而不是--date. 来自man touch:
Run Code Online (Sandbox Code Playgroud)-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')
Run Code Online (Sandbox Code Playgroud)
一些解释:
stat -c %y f1219486.jpg 将返回最后修改的时间 f1219486.jpgawk 'BEGIN {FS="[-]|[:]|[ ]|[.]"} {printf $2$3$4$5"."$6}' 将以这种格式更改上一个命令的输出: MMDDhhmm.sssed -r 's/^/13/g'会13在前面加上(当前年份)MMDDhhmm.ss现在您只能更改文件的年份:
touch -t $STAMP f1219486.jpg
Run Code Online (Sandbox Code Playgroud)