Der Finder in Mac OS X 10.7 Lion zeigt die neuen Dateimetadaten "Aufnahmedatum" an, die das Datum protokollieren, an dem ein Element zu einem Ordner hinzugefügt wurde. Nach dem Upgrade auf 10.7 hat keines der Elemente in meinem ~/Downloads
Ordner den Wert "Datum hinzugefügt". Ich möchte alle leeren Werte für "Hinzugefügt am" so festlegen, dass sie mit den Werten für "Geändert am" übereinstimmen, kann jedoch nicht herausfinden, wie das Attribut "Hinzugefügt am" auf einen bestimmten Wert festgelegt wird.
Meine erste Vermutung war:
xattr -w com.apple.metadata:kMDItemDateAdded "2012-02-19 16:34:47 +0000" myfile
Aber das scheint nicht zu funktionieren (obwohl es auch keinen Fehler meldet).
Antworten:
OK, neuer Ansatz hier. Achtung: Ich habe kein auf Lion aktualisiertes System (auf meinem Computer war Lion installiert), daher kann ich dies nicht testen. Ungetesteter Code; sichern Sie, bevor Sie diesen Code ausprobieren!
Meine vorherige Antwort basierte auf der Sortierreihenfolge, die vom Downloads-Stapel im Dock verwendet wurde. Das Feld "Aufnahmedatum" im Finder basiert anscheinend auf Spotlight-Informationen, die schwer zu hacken sind. Es ist auch nicht über AppleScript zugänglich. Es scheint jedoch eine Problemumgehung zu geben.
Erstellen Sie einen neuen Workflow in Automator.
Stellen Sie den Workflow so ein, dass Dateien oder Ordner aus dem Finder akzeptiert werden, indem Sie die Aktion "Nach Finder-Elementen fragen" hinzufügen.
Lassen Sie den Workflow ein AppleScript ausführen, indem Sie die Aktion "AppleScript ausführen" hinzufügen.
Verwenden Sie dieses AppleScript:
Wählen Sie die Dateien aus, für die noch kein Aufnahmedatum vorliegt (sortieren Sie nach Aufnahmedatum im Finder, und wählen Sie dann den Teil der Liste ohne Aufnahmedatum aus), und führen Sie diesen Dienst aus.
quelle
/.Spotlight-V100
, könnte dies so gut sein, wie es nur geht. Aber ich würde gerne eine saubere Antwort sehen.$
ihren Namen hatte. Ich habe das jedoch umgangen, indem ich diese Datei vorübergehend umbenannt habe. Um den Apple behandelt solche Dateien zu machen, meine Recherchen zeigen , dass Sie ersetzen könntenmyfile
mitquoted form of myfile
, aber ich habe nicht getestet , dass. Wenn man das versucht, könnte es klarer sein, die Anführungszeichen beim Setzen zu machenmyfile
und die Variable in umzubenennenquotedFilePath
.Wenn ich
xattr -l
Elemente in meinem Downloads-Ordner auswähle, wird ein Feld angezeigt, das ungefähr so aussieht:Dies ist eine binäre Liste. Wenn ich mit HexFiend eine Datei mit diesen Bytes erstelle (ja, ich habe sie manuell eingegeben; sprengen Sie die Vergangenheit wie die Eingabe von Assembler-Code aus einem Magazin in mein Apple] [GS) und speichern Sie sie dann als .plist-Datei, die ich geöffnet habe die Datei in TextWrangler und erhielt die folgende nicht kompilierte XML:
Das heißt, während Apple die Daten in kompiliertem XML zu speichern scheint, scheint Klartext zu funktionieren.
Mit anderen Worten, wenn Sie das Änderungsdatum der Datei in Form einer Zeichenfolge abrufen können, können Sie den Befehl ausführen
xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
, um das "Download-Datum" zu ändern, bei dem es sich anscheinend um das Feld handelt, nach dem tatsächlich sortiert wurde, nicht um das tatsächliche hinzugefügte Datum.Schließlich ist beim Hinzufügen des (nicht verwendeten)
kMDItemDateAdded
Feldes kein Fehler aufgetreten, da, wie ich in diesem Artikel erfahren habe ,xattr
das gewünschte, verwendete oder nicht verwendete Metadatenfeld problemlos festgelegt wird.Das ist der Kern der Antwort. Ich werde daran arbeiten, ein AppleScript zu schreiben, um das Änderungsdatum für jede Datei zu ermitteln. Überprüfen Sie, ob das Datum
kMDItemDownloadedDate
festgelegt ist. Wenn dies nicht der Fall ist, setzen Sie kMDItemDownloadedDate auf das Änderungsdatum, aber ich wollte den Kern der Antwort veröffentlichen.quelle
xattr -p com.apple.metadata:kMDItemDownloadedDate FILENAME_HERE | xxd -r -p | plutil -convert xml1 - -o -
. Der xxd konvertiert in binäre Plist-Daten,plutil
konvertiert dann in XML-Plist und druckt sie aus.xattr -l
, und kMDItemDownloadedDate ist nicht in aufgeführtmdls
. Neugieriger und neugieriger. Das Feld "Aufgenommen am" wird auch nicht in einem xattr für das Verzeichnis gespeichert . Wo leben diese Metadaten?xattr
es sich um ein Python-Skript handelt, sollte es möglich sein, in diesem Skript herumzustöbern und herauszufinden, wie die Binärdaten des Attributs in binär statt hexadezimal abgerufen werden können, damit Sie es direkt weitergeben könnenplutil
.Ich kann das im Finder angezeigte "Aufnahmedatum" nicht einstellen.
Ich glaube, Sie haben Recht, dass es aus dem
kMDItemDateAdded
Metadatenattribut des Spotlight-Index abgerufen wird. Spotlight scheint dies jedoch auf irgendeine Weise selbst abzuleiten.Ich habe versucht, ein erweitertes Dateiattribut einzurichten, das
com.apple.metadata:kMDItemDateAdded
zu einem Datumswert in einem von mehreren verschiedenen Formaten aufgerufen wird , einschließlich des von verwendeten Formats,kMDItemDateAdded
und keines davon wurde vom Spotlight-Index erfasst, dh unabhängig vom angezeigten Wert und vomxattr
Wert gezeigt vonmdls
wurde nicht geändert.Ich denke , obwohl ich nicht sicher bin, dass Spotlight dieses Datum einfach basierend auf dem ersten Indizieren einer Datei an einem bestimmten Speicherort festlegt und keine anderen Metadaten überprüft, um sie zu generieren. Wenn Sie
mv
eine Datei aus Downloads und wieder in haben, wird das Hinzufügungsdatum zu dem Zeitpunkt aktualisiert, an dem sie wieder in die Datei verschoben wurde, aber keine der Dateimetadaten scheint betroffen zu sein, nur die Spotlight-Metadaten.Zusammenfassend kann ich also davon ausgehen, dass das hinzugefügte Datum nur irgendwo in den eher kryptischen Eingeweiden von /.Spotlight-V100 gespeichert ist. Wenn jemand nicht die Möglichkeit hat, Spotlight anzuweisen, einen Metadateneintrag auf einen beliebigen Wert zu aktualisieren, kann ich Folgendes tun: Ich sehe keinen Weg, dies zu tun.
quelle
Vielen Dank an Daniel Lawson für die Lösung! Es funktioniert immer noch gut, auch zwei Jahre später.
Ich habe zwei Ergänzungen:
1) Bitte beachten Sie, dass der Code der akzeptierten Antwort einen kleinen Fehler enthält.
Diese Linie:
... hat einen zusätzlichen Apostroph, der einen "unerwarteten EOF" -Fehler auslöst. Es sollte lauten:
2) Wichtiger ist, dass ab Mavericks 10.9.2 das System-Setup Administratorrechte erfordert. Daher sollte jeder Aufruf eines Shell-Skripts dieser Formel folgen:
Hier ist die vollständig modifizierte Version des AppleScript, die für die Arbeit in 10.9.3 bestätigt wurde:
quelle