BSD 系统有 utime(3),它(除其他外)允许更改文件的“出生时间”,又名 btime(与 atime、mtime 或 ctime 相比)。但是,手册页还表明 utime(3) 已被 utime(2) 废弃。
我知道我可以看法使用 stat 的 btime 值:
stat -f %B <file>
不幸的是,touch(1)似乎没有实现btime的操作。我的 Mac 上的手册页包含 C 库中 utime(3) 的一个条目,它可以操作 btime,但我没有看到任何为 utime(3) 的 btime 操作提供内置接口的内容。
我想到的另一个提示:当我将照片从 Mac 应用程序“照片”中拖出时,它会创建新文件。 (原始文件保留在“照片”组织的位置,因此我确定这是从原始文件复制的新文件。)这些新文件具有创建日期(我在查找器列表或获取信息中看到的内容,其中显示文件的 btime 值)与照片拍摄时间相匹配——通常是几年前。很明显它是可能的设置 btime。
答案1
解决这个问题的一种方法(这解决了我的问题)是使用 Apple 的 SetFile(1) 命令,该命令允许操作文件属性。它需要一个-d
arg 来操作创建日期和一个-m
arg 来操作修改时间。有用的是,如果我将修改时间设置为当前创建日期之前,它也会设置创建日期。
$ SetFile -m 05/14/200 foofile.jpg
Apple/Think Different 堆栈上的这个 Q 有此信息https://apple.stackexchange.com/questions/49154/how-to-change-the-creation-st-birthtime-date-time-of-a-file-in-lion