我有一组我从巡演中得到的图像。文件名具有嵌入的时间戳(例如," 2015-07-04-15-02-14.jpg")。可悲的是,他们所有的时间/日期都标有下载日期,而不是拍摄像素时。为了将它们整合到我在巡演期间拍摄的照片中,我想更改给定文件名的时间戳。 (这与人们通常需要的情况相反。)
这些文件都在他们自己的目录中,所以我需要读取整个目录并根据文件名中的字符触摸文件。
我不是Linux脚本专家,但如果有人可以帮我找出执行此操作的代码,我真的很感激。感谢。
答案 0 :(得分:2)
您可以使用相当简单的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
缺少提供的详细-v
选项通过具有ln
和cp
)的可比实用程序:
ls -l $file
答案 1 :(得分:0)
请参阅touch的手册页 请参阅有用的选项
-a仅更改访问时间
-m只改变
修改时间-t STAMP 使用[[CC] YY] MMDDhhmm [.ss]代替当前时间