Lorsque je lance des xattr -l
éléments dans mon dossier Téléchargements, j'obtiens un champ qui ressemble à ceci:
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
Ceci est un plist binaire. Lorsque j'utilise HexFiend pour créer un fichier avec ces octets (oui, je les ai entrés manuellement; souffle du passé comme entrer le code assembleur d'un magazine dans mon Apple] [GS), puis l'enregistrer en tant que fichier .plist, j'ai ouvert le fichier dans TextWrangler et a obtenu le XML non compilé suivant:
<?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>
Cela dit, alors qu'Apple semble stocker les dates dans du XML compilé, le texte brut semble fonctionner.
En d'autres termes, si vous pouvez obtenir la date de modification du fichier sous forme de chaîne, vous pouvez exécuter la commande xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
pour modifier la "date de téléchargement", qui semble être le champ réellement trié, et non la date réelle ajoutée.
Enfin, vous n'avez reçu aucune erreur lors de l'ajout du kMDItemDateAdded
champ (inutilisé) , car, comme je l'ai appris dans cet article , xattr
définissez avec plaisir le champ de métadonnées que vous souhaitez, utilisé ou inutilisé.
C'est le cœur de la réponse. Je vais travailler sur l'écriture d'un AppleScript pour obtenir la date de modification de chaque fichier, vérifier si elle kMDItemDownloadedDate
est définie, et si ce n'est pas le cas, définir kMDItemDownloadedDate à la date modifiée, mais je voulais que le cœur de la réponse soit publié.