我有相当多的 (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