【问题标题】:OSX set "Date Created" from filenameOSX 从文件名中设置“创建日期”
【发布时间】:2016-06-14 16:15:33
【问题描述】:

我有一个文件夹,里面装满了魔兽世界的截图,但我丢失了原始日期戳(创建日期的元数据)。

好消息是所有文件都用日期系统命名

WoWScrnShot_123109_224259.jpg

WoWScrnShot_092510_213950.jpeg

WoWScrnShot_041813_183548.tga

WoWScrnShot_011315_132530.png

原来如此 WoWScrnShot_MMDDYY_HHMMSS.filetype

我想要一个脚本来遍历我的截图文件夹中的所有图片并相应地设置元数据。

注意:文件在jpg/jpeg/tga/png中

【问题讨论】:

  • 您使用什么语言?你看过- setAttributes:ofItemAtPath:error:的文档吗?
  • 我查看了终端突击队 touch 和 SetFile,并成功地将其用于单个文件。但我有 14000 多张截图。为了加快速度,我想编写一个脚本,从每个文件名中获取日期和时间并循环每个文件名并相应地设置日期和时间。
  • 我有点知道这会是什么样子。我需要将文件名放在一个变量中并使用它来设置日期和时间。并根据某些条件对文件夹中的所有文件进行循环。

标签: macos loops date screenshot


【解决方案1】:

这是一个非常丑陋的 bash 脚本,我不久前写了一个完全相同的目的,我只是做了一点修改,以便它可以在 OS X 上运行。希望它对你有用。

#!/bin/bash
FILES=/Path/To/Screenshots/*
for f in $FILES
do
    month="$(echo $f | sed 's/\.[^.]*$//' | awk '{gsub("/Path/To/Screenshots/WoWScrnShot_", "");print}' | awk '{print substr($0,0,2)}')"
    day="$(echo $f | sed 's/\.[^.]*$//' | awk '{gsub("/Path/To/Screenshots/WoWScrnShot_", "");print}' | awk '{print substr($0,3,2)}')"
    year="$(echo $f | sed 's/\.[^.]*$//' | awk '{gsub("/Path/To/Screenshots/WoWScrnShot_", "");print}' | awk '{print substr($0,5,2)}')"
    hour="$(echo $f | sed 's/\.[^.]*$//' | awk '{gsub("/Path/To/Screenshots/WoWScrnShot_", "");print}' | awk '{print substr($0,8,2)}')"
    minute="$(echo $f | sed 's/\.[^.]*$//' | awk '{gsub("/Path/To/Screenshots/WoWScrnShot_", "");print}' | awk '{print substr($0,10,2)}')"
    second="$(echo $f | sed 's/\.[^.]*$//' | awk '{gsub("/Path/To/Screenshots/WoWScrnShot_", "");print}' | awk '{print substr($0,12,2)}')"
    echo $f
    SetFile -d "$month/$day/$year $hour:$minute:$second" $f
    SetFile -m "$month/$day/$year $hour:$minute:$second" $f
done

【讨论】:

    猜你喜欢
    • 2020-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多