当我xattr -l
在“下载”文件夹中的项目上运行时,我得到一个看起来像这样的字段:
com.apple.metadata:kMDItemDownloadedDate:
00000000 62 70 6C 69 73 74 30 30 A1 01 33 41 B4 83 4D BF |bplist00..3A..M.|
00000010 4C 4F E3 08 0A 00 00 00 00 00 00 01 01 00 00 00 |LO..............|
00000020 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 13 |.....|
00000035
这是一个二进制plist。当我使用HexFiend创建具有这些字节的文件时(是的,我手动输入了这些文件;像过去将杂志中的汇编代码输入到我的Apple中一样)[GS]爆炸了,然后将其另存为.plist文件,我打开了TextWrangler中的文件,并得到以下未编译的xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<date>2011-11-28T05:03:59Z</date>
</array>
</plist>
也就是说,尽管Apple似乎将日期存储在已编译的XML中,但纯文本似乎可以工作。
换句话说,如果可以字符串形式获取文件的修改日期,则可以运行命令xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
来更改“下载日期”,该日期似乎是实际排序的字段,而不是实际的“添加日期”。
最终,添加(未使用)kMDItemDateAdded
字段时没有任何错误,因为,正如我在本文中了解到的那样,xattr
它将愉快地设置您想要,使用或未使用的任何元数据字段。
这就是答案的核心。我将编写一个AppleScript来获取每个文件的修改日期,检查是否kMDItemDownloadedDate
已设置,如果未设置,请将kMDItemDownloadedDate设置为修改日期,但我想发布答案的核心。