Finder в Mac OS X 10.7 Lion показывает новый фрагмент метаданных файла «Дата добавления», который отслеживает дату добавления элемента в папку. После обновления до 10.7 ни один из элементов в моей ~/Downloads
папке не имеет значений «Дата добавления». Я хотел бы установить все пустые значения «Дата добавления», чтобы они соответствовали значениям «Дата изменения», но я не могу понять, как установить для атрибута «Дата добавления» определенное значение.
Мое первое предположение было таким:
xattr -w com.apple.metadata:kMDItemDateAdded "2012-02-19 16:34:47 +0000" myfile
Но это, похоже, не работает (хотя и не сообщает об ошибке).
Ответы:
ОК, новый подход здесь. Внимание: у меня нет системы, обновленной до Lion (на моем компьютере была установлена Lion), поэтому я не могу проверить это. Непроверенный код; сделайте резервную копию, прежде чем пытаться этот код!
Мой предыдущий ответ был основан на порядке сортировки, используемом стеком загрузок в Dock. Поле «Дата добавления» в Finder, похоже, основано на информации Spotlight, которую трудно взломать. Это также не доступно через AppleScript. Но, кажется, есть обходной путь.
Создайте новый рабочий процесс в Automator.
Настройте рабочий процесс для приема файлов или папок из Finder, добавив действие «Запросить элементы Finder».
Пусть рабочий процесс запустит AppleScript, добавив действие «Запустить AppleScript».
Используйте этот AppleScript:
Выберите файлы, у которых еще нет даты добавления (сортировка по дате добавления в Finder, затем выберите часть списка без даты добавления) и запустите эту службу.
источник
/.Spotlight-V100
, это может быть так же хорошо, как и получается. Но я люблю , чтобы увидеть чистый ответ.$
с его именем, но я решил эту проблему, временно переименовав этот файл. Для того, чтобы AppleScript обрабатывать такие файлы, мои поиски показывают , что вы могли бы заменитьmyfile
сquoted form of myfile
, но я не проверял это. Если вы попробуете это, было бы яснее сделать кавычки при установкеmyfile
и переименовать переменную вquotedFilePath
.Когда я запускаю
xattr -l
элементы в папке «Загрузки», я получаю поле, которое выглядит примерно так:Это бинарный список. Когда я использую HexFiend для создания файла с этими байтами (да, я ввел их вручную; взорвать из прошлого, как ввод кода ассемблера из журнала в мой Apple] [GS), затем сохранить его как файл .plist, я открыл файл в TextWrangler и получил следующий некомпилированный XML:
Тем не менее, хотя Apple, кажется, хранит даты в скомпилированном XML, простой текст, похоже, работает.
Другими словами, если вы можете получить дату изменения файла в строковой форме, вы можете запустить команду,
xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
чтобы изменить «загруженную дату», которая выглядит как поле, на которое фактически отсортировано, а не как «Дата добавления».Наконец, вы не получили ошибки при добавлении (неиспользованного)
kMDItemDateAdded
поля, потому что, как я узнал в этой статье ,xattr
мы с радостью установим любое поле метаданных, которое вы хотите, использовать или не использовать.Это суть ответа. Я буду работать над написанием AppleScript, чтобы получить дату изменения для каждого файла, проверить,
kMDItemDownloadedDate
установлена ли она, а если нет, установить kMDItemDownloadedDate на дату изменения, но я хотел опубликовать суть ответа.источник
xattr -p com.apple.metadata:kMDItemDownloadedDate FILENAME_HERE | xxd -r -p | plutil -convert xml1 - -o -
. Xxd преобразует в двоичные данные plist, затемplutil
преобразует в XML plist и печатает их.xattr -l
, а kMDItemDownloadedDate не указан вmdls
. Любопытнее и любопытнее. Также поле Дата добавления не хранится в xattr для каталога . Где живут эти метаданные?xattr
это скрипт на python, я полагаю, что в этом скрипте можно поэкспериментировать и выяснить, как получить двоичные данные атрибута в двоичном, а не в шестнадцатеричном виде, чтобы вы могли передавать его напрямуюplutil
.Я не могу найти способ установить «Дата добавления», отображаемая в Finder.
Я считаю, что вы правы, что он получен из
kMDItemDateAdded
атрибута метаданных индекса Spotlight . Тем не менее, Spotlight, по-видимому, получает это сам по себе.Я попытался настроить расширенный атрибут файла, вызываемый
com.apple.metadata:kMDItemDateAdded
для значения даты, в одном из нескольких различных форматов, включая используемый формат,kMDItemDateAdded
и ни один из них не был выбран индексом Spotlight, то есть независимо от того, какое значение показываетxattr
значение показаноmdls
не было изменено.Я предположил бы , хотя я не уверен наверняка, что Центр внимания просто устанавливает эту дату, основанную на том, когда он в первый раз индексирует файл в определенном месте, и не проверяет другие метаданные для генерации. Если вы
mv
загрузили файл из раздела «Загрузки» и вернулись обратно, Дата добавления обновится до момента его перемещения, но ни одна из метаданных файла не будет затронута, а только метаданные Spotlight.Итак, в заключение, я считаю, что Date Added хранится только где-то в довольно загадочных кишках /.Spotlight-V100, и если кто-то не сможет придумать, как Spotlight обновить запись метаданных до произвольного значения, я могу ' не вижу способа сделать это.
источник
Спасибо Дэниелу Лоусону за решение! Это все еще работает хорошо, даже два года спустя.
У меня есть два дополнения:
1) Обратите внимание, что в коде принятого ответа есть небольшая ошибка.
Эта строка:
... имеет дополнительный апостроф, вызывающий ошибку "неожиданный EOF". Следует читать:
2) Более важно, начиная с Mavericks 10.9.2, для настройки системы требуются права администратора. Таким образом, каждый вызов сценария оболочки должен следовать этой формуле:
Вот полная модифицированная версия AppleScript, подтвержденная для работы в 10.9.3:
источник