Cuando ejecuto xattr -l
elementos en mi carpeta de Descargas, aparece un campo que se ve así:
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
Este es un plist binario. Cuando uso HexFiend para crear un archivo con esos bytes (sí, los ingresé manualmente; explosión del pasado como ingresar el código del ensamblador de una revista en mi Apple] [GS), luego guardarlo como un archivo .plist, abrí el archivo en TextWrangler y obtuvo el siguiente xml sin compilar:
<?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>
Dicho esto, aunque Apple parece almacenar las fechas en XML compilado, el texto sin formato parece funcionar.
En otras palabras, si puede obtener la fecha de modificación del archivo en forma de cadena, puede ejecutar el comando xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
para cambiar la "fecha de descarga", que parece ser el campo realmente ordenado, no la Fecha de adición real.
Finalmente, no obtuvo ningún error al agregar el kMDItemDateAdded
campo (sin usar) porque, como aprendí en este artículo , xattr
establecerá felizmente cualquier campo de metadatos que desee, usado o sin usar.
Ese es el núcleo de la respuesta. Trabajaré en escribir un AppleScript para obtener la fecha de modificación para cada archivo, verificar si kMDItemDownloadedDate
está configurado y, si no lo está, establecer kMDItemDownloadedDate en la fecha de modificación, pero quería que se publicara el núcleo de la respuesta.