Le Finder dans Mac OS X 10.7 Lion affiche un nouveau morceau de métadonnées de fichier, "Date ajoutée", qui suit la date à laquelle un élément a été ajouté à un dossier. Après la mise à niveau vers 10.7, aucun des éléments de mon ~/Downloads
dossier n'a de valeur "Date d'ajout". Je voudrais définir toutes les valeurs "Date d'ajout" vides pour correspondre aux valeurs "Date de modification", mais je ne sais pas comment définir l'attribut "Date d'ajout" à une valeur spécifique.
Ma première supposition était la suivante:
xattr -w com.apple.metadata:kMDItemDateAdded "2012-02-19 16:34:47 +0000" myfile
Mais cela ne semble pas fonctionner (bien qu'il ne signale pas non plus d'erreur).
Réponses:
OK, nouvelle approche ici. Attention: Je n'ai pas de système mis à niveau vers Lion (mon ordinateur est livré avec Lion installé), je ne peux donc pas le tester. Code non testé; sauvegardez avant d'essayer ce code!
Ma réponse précédente était basée sur l'ordre de tri utilisé par la pile Téléchargements dans le Dock. Le champ Date d'ajout dans le Finder semble être basé sur des informations Spotlight, qui sont difficiles à pirater. Il n'est pas non plus accessible via AppleScript. Mais, il semble y avoir une solution de contournement.
Créez un nouveau workflow dans Automator.
Configurez le flux de travail pour accepter les fichiers ou dossiers du Finder en ajoutant l'action «Demander des éléments du Finder».
Demandez au flux de travail d'exécuter un AppleScript en ajoutant l'action «Exécuter AppleScript».
Utilisez ce AppleScript:
Sélectionnez les fichiers qui n'ont pas encore de date ajoutée (triez par date d'ajout dans le Finder, puis sélectionnez la partie de la liste sans date ajoutée) et exécutez ce service.
la source
/.Spotlight-V100
, cela pourrait être aussi bon que possible. Mais je l' aime voir une réponse propre.$
son nom, mais j'ai contourné cela en renommant temporairement ce fichier. Pour l'AppleScript gérer ces fichiers, mes recherches indiquent que vous pouvez remplacermyfile
avecquoted form of myfile
, mais je n'ai pas testé cela. Si l'on essayait cela, il pourrait être plus clair de faire la citation lors de la définitionmyfile
et du changement de nom de la variablequotedFilePath
.Lorsque je lance des
xattr -l
éléments dans mon dossier Téléchargements, j'obtiens un champ qui ressemble à ceci: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:
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é.la source
xattr -p com.apple.metadata:kMDItemDownloadedDate FILENAME_HERE | xxd -r -p | plutil -convert xml1 - -o -
. Le xxd convertit en données de plist binaire, puis leplutil
convertit en plist XML et l'imprime.xattr -l
, et kMDItemDownloadedDate n'est pas répertorié avecmdls
. Curieux et curieux. Le champ Date d'ajout n'est pas non plus stocké dans un xattr pour le répertoire . Où vivent ces métadonnées?xattr
s'agit d'un script python, je suppose qu'il devrait être possible de fouiller dans ce script et de comprendre comment obtenir les données binaires de l'attribut en binaire, plutôt qu'en hexadécimal, afin que vous puissiez le nourrir directementplutil
.Je ne trouve pas de moyen de définir la "Date d'ajout" affichée dans le Finder.
Je pense que vous avez raison de le récupérer à partir de l'
kMDItemDateAdded
attribut de métadonnées de l'index Spotlight . Cependant, Spotlight semble dériver cela lui-même d'une manière ou d'une autre.J'ai essayé de configurer un attribut de fichier étendu appelé
com.apple.metadata:kMDItemDateAdded
à une valeur de date dans l'un des différents formats, y compris le format utilisé parkMDItemDateAdded
et aucun d'entre eux n'a été récupéré par l'index Spotlight, c'est-à-dire quelle que soit la valeur affichéexattr
, la valeur montré parmdls
n'a pas été modifié.Je suppose , bien que je ne sois pas sûr, que Spotlight fixe simplement cette date en fonction de la première fois qu'il indexe un fichier à un emplacement particulier, et ne vérifie aucune autre métadonnée afin de le générer. Si vous
mv
retirez un fichier des téléchargements et que vous le rentrez, la date d'ajout met à jour le moment où il a été réinstallé, mais aucune des métadonnées du fichier ne semble affectée, seules les métadonnées Spotlight.Donc, en résumé, je pense que la date d'ajout n'est stockée que dans les tripes plutôt cryptiques de /.Spotlight-V100, et à moins que quelqu'un ne puisse trouver un moyen de dire à Spotlight de mettre à jour une entrée de métadonnées à une valeur arbitraire, je peux '' t voir un moyen de le faire.
la source
Merci à Daniel Lawson pour la solution! Cela fonctionne toujours bien, même deux ans plus tard.
J'ai deux ajouts:
1) Veuillez noter qu'il y a une petite erreur dans le code de la réponse acceptée.
Cette ligne:
... a une apostrophe supplémentaire, déclenchant une erreur "EOF inattendue". Il devrait se lire:
2) Plus important encore, à partir de Mavericks 10.9.2, la configuration du système nécessite des droits d'administrateur. Donc, chaque appel au script shell doit suivre cette formule:
Voici la version entièrement modifiée d'AppleScript, confirmée pour fonctionner en 10.9.3:
la source