如何以编程方式修改文件的日期?

时间:2013-07-08 20:08:23

标签: linux perl bash shell date

我有一些图像文件的日期错误(创建文件的日期,ls -l显示的值),因为它在相机中设置错误。如何在更改目录中所有* .jpg文件的脚本中将日期增加两天? Bash,Perl,什么曾经在Linux机器上运行并且适合这项工作都没关系。

在网上搜索我发现touch用于操纵日期,但我没有找到将其增加两天的方法,同时保留了时间。

谢谢。

3 个答案:

答案 0 :(得分:5)

我想这不是修改文件的日期(就像所有其他响应一样),你想修改元数据,所以请看这个页面:http://savvyadmin.com/fixing-dates-in-image-exif-tag-data-from-linux/ < / p>

您必须使用jhead(或exiv2),如下所示:

jhead -ts2003:01:01-00:00:00 image.jpg

最后但并非最不重要的是,有一个特殊的开关-ta来直接修改日期:ex。两天后:

for i in *.jpg; do jhead -ta+48:00 "$i"; done

答案 1 :(得分:2)

使用touch更改模态时间。

使用date操作日期。

未测试:

for f in *jpg; do
  mtime=`date -r $f`
  nextt=`date "$mtime + 2 days"`
  touch -d "$nextt" $f
done

答案 2 :(得分:1)

touch是工作的工具。

for file in P123*.JPG ; do
    touch --date="$(date -r $file) + 2 days" $file
done