linux/shell:相对地更改文件的修改时间戳?

ind*_*dex 21 linux

我的相机产生的文件一样IMG_1234.JPG,并MVI_1234.AVI与这些文件的时间戳。不幸的是,时间设置不正确,时间戳关闭。

我想在磁盘上设置文件的时间戳。(不是 EXIF 数据)。

建议的算法:

1 read file's modify date
2 add delta, i.e. hhmmss (preferred: change timezone)
3 write new timestamp
Run Code Online (Sandbox Code Playgroud)

是否有捷径可寻?也许人们可以使用纪元时间(自此之后的秒数)简化计算并创建一个 shell 脚本。

res*_*dsk 39

touch 可以这样做:

 $ ls -l something
-rw-rw-r-- 1 tgs tgs 0 2010-03-22 16:03 something
 $ touch -r something -d '-1 day' something 
 $ ls -l something 
-rw-rw-r-- 1 tgs tgs 0 2010-03-21 16:03 something
Run Code Online (Sandbox Code Playgroud)

http://linux.about.com/library/cmd/blcmdl_touch.htm

要更改 mtime,请添加 --time=mtime

  • 当我第一次回答时,是的,但我编辑了答案。当您使用“-r file”选项时,它与该文件相关。因此,如果您有时间相对于您正在操作的同一个文件,您就会得到您想要的。 (3认同)

小智 11

结合以上,如果 AM/PM 是错误的...

更正文件时间戳:

#!/bin/sh
for i in all/*; do
  touch -r "$i" -d '-12 hour' "$i"
done
Run Code Online (Sandbox Code Playgroud)

然后将 jpg 文件中的 EXIF 信息更新为更正的时间戳:

$ jhead -dsft *.jpg
Run Code Online (Sandbox Code Playgroud)

不要忘记修复相机中的时间设置。