Когда я запускаю 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
Это бинарный список. Когда я использую 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 на дату изменения, но я хотел опубликовать суть ответа.