2015-07-10 173 views
0

我有一套我从旅途中获得的图像。文件名具有嵌入的时间戳(例如,“2015-07-04-15-02-14.jpg”)。可悲的是,他们都是时间/日期标记下载日期,而不是当pix被拍摄时。为了将它们整合到我在巡演中拍摄的照片中,我想更改给定文件名称的时间戳。 (这与人们通常需要的相反)。如何从Linux中的文件名更改文件的时间戳?

这些文件将全部位于其自己的目录中,因此我需要读取整个目录并根据文件名中的字符来触摸文件。

我不是Linux脚本专家,但如果有人能帮我找出代码来做到这一点,我会非常感激。谢谢。

回答

0

参考的touch 手册页请参阅有用的选项

只访问时间

-m变化-a只改变

修改时间-t STAMP 使用[ [CC] YY] MMDDhhmm [.ss]而不是当前时间

2

你可以做t他与一个相当简单的shell脚本,它使用你的命名约定以获得touch命令时间戳值,例如,

#!/bin/sh 
for file in $* 
do 
    test -f "$file" || continue 
    ts=$(basename "$file" .jpg | sed -e 's/-//g') 
    touch -t $ts $file 
done 

脚本使用basename剥去“.JPG”后缀,然后使用sed删除所有的破折号。您的剩余数字碰巧与touch使用的时间戳值的顺序相同,因此它应该可以工作。

你会使用这样的脚本

./myscript *.jpg 

如果你想看到它做任何事情(除了可能的错误消息),您将添加一个符合ls(出于某种原因,GNU touch缺乏详细通过可比公用事业为lncp)提供-v选项:

ls -l $file 
+0

也做到了,谢谢! –

相关问题