Quando executo xattr -l
itens na minha pasta Downloads, recebo um campo parecido com o seguinte:
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 é um argumento binário. Quando uso o HexFiend para criar um arquivo com esses bytes (sim, eu os inseri manualmente; exploda do passado como inserir código assembler de uma revista na minha Apple] [GS) e salve-o como um arquivo .plist, abri o arquivo no TextWrangler e obteve o seguinte xml descompilado:
<?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>
Dito isto, enquanto a Apple parece armazenar as datas em XML compilado, o texto sem formatação parece funcionar.
Em outras palavras, se você pode obter a data modificada do arquivo na forma de sequência, pode executar o comando xattr -w com.apple.metadata:kMDItemDownloadedDate "2012-02-19 16:34:47 +0000" file
para alterar a "data do download", que parece ser o campo realmente classificado, não a Data Real Adicionada.
Finalmente, você não encontrou nenhum erro ao adicionar o kMDItemDateAdded
campo (não utilizado) porque, como aprendi neste artigo , xattr
definirá com prazer qualquer campo de metadados que você desejar, usado ou não.
Esse é o núcleo da resposta. Vou trabalhar para escrever um AppleScript para obter a data de modificação de cada arquivo, verificar se kMDItemDownloadedDate
está definido e, se não estiver, defina kMDItemDownloadedDate como a data de modificação, mas eu queria publicar o núcleo da resposta.