Linux 如何修改文件';今天是什么日子?

Linux 如何修改文件';今天是什么日子?,linux,perl,bash,shell,date,Linux,Perl,Bash,Shell,Date,我有一些图像文件的日期错误(文件创建日期,由ls-l显示的值),因为它在相机中设置错误。如何在更改目录中所有*.jpg文件的脚本中将日期增加两天?Bash、Perl,任何在Linux机器上运行并且适合该工作的东西都可以 在网上搜索时,我发现touch是用来操纵日期的,但我没有找到一种方法,在保留时间的同时,将日期增加两天 谢谢。用于更改时间 用于在日期操作 未经测试: for f in *jpg; do mtime=`date -r $f` nextt=`date "$mtime + 2

我有一些图像文件的日期错误(文件创建日期,由
ls-l
显示的值),因为它在相机中设置错误。如何在更改目录中所有*.jpg文件的脚本中将日期增加两天?Bash、Perl,任何在Linux机器上运行并且适合该工作的东西都可以

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

谢谢。

用于更改时间

用于在日期操作

未经测试:

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

touch
是作业的工具

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

我猜您不想修改文件的日期(就像这次所有其他响应一样),而是想修改元数据,因此请参见本页:

您必须像这样使用(或exiv2):

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

最后但并非最不重要的一点是,有一个特殊的开关
-ta
直接修改日期:例如,2天后:

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

请给出显示日期编码位置的文件名/内容示例。并显示您尝试的内容。编辑问题以提供更多信息。链接后面的touch文档建议您需要使用-t或-d选项使此工作人员成为我编辑的帖子,并在一行中为每个JPG文件添加2天+1:是的,必须修改元数据,而不是文件日期本身。不,我真的是指文件日期。但是,下一步是更改元数据日期。到目前为止我还没有想到,所以谢谢你的提示。我想这取决于你是如何组织你的fotografs文件日期还是元数据中的日期是重要的。我不得不修改你的解决方案使其工作,但最后我还是设法做到了。工作解决方案是:
用于*.JPG中的文件;请勿触摸-d“`date-r$file'+%F%T'`2天”$file;完成
您的解决方案总是给出错误:“无效日期”,这就是为什么我添加了格式化选项
+%F%T
,而
+
给出了完全奇怪的结果(
+2天
增加了一天,
+3天
增加了一天减去1小时)。@Twonky:您有非英语的
区域设置
有效吗?