Mac OS X: Dodaj niestandardowe pole metadanych do dowolnego pliku

Chciałbym móc ustawić (i uzyskać) niestandardowy atrybut metadanych dla dowolnego pliku.

Jaki jest najlepszy sposób na to?

Thanks

Author: AP., 2011-12-16

5 answers

Framework OpenMeta jest de facto zewnętrznym standardem dodawania metadanych do plików OS X przy użyciu rozszerzonych atrybutów. Jest używany przez wiele aplikacji innych firm.

 11
Author: Ned Deily,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 18:14:34

Własne nazwy atrybutów działają dla mnie:

$ xattr -w com.apple.metadata:MyAttribute gfdylvyieo a.txt
$ mdls -n MyAttribute a.txt
MyAttribute = "gfdylvyieo"
$ mdfind gfdylvyieo
/private/tmp/a.txt
$ mdfind 'MyAttribute=*'
/private/tmp/a.txt

xattr -wx nie jest potrzebne, jeśli wartość jest zwykłym tekstem:

xattr -w com.apple.metadata:kMDItemFinderComment aa file.txt

Gdy dodajesz komentarz Spotlight z Findera, jest on przechowywany zarówno jako Rozszerzony atrybut, jak i w .Plik DS_Store. Jeśli dodasz tylko rozszerzony atrybut, pole komentarza Spotlight będzie puste w Finderze, ale metadane komentarza będą nadal indeksowane przez Spotlight.

 14
Author: user495470,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-30 18:04:10

To brzmi jak zadanie dla rozszerzonych atrybutów. Można je pobrać i ustawić z linii poleceń za pomocą xattr oraz z programów za pomocą getxattr i setxattr.

Jednak atrybuty rozszerzone nie są (przynajmniej ogólnie) indeksowane przez Spotlight. Jedyny wyjątek jaki znam to " com.jabłko.metadane: atrybut kMDItemFinderComment", który powinien zawierać plist w formacie binarnym z aktualnym, indeksowalnym komentarzem(zobacz odpowiedź @ PurplePilot). to Strona twierdzi, że spotlight będzie indeksować inne xattry poprzedzone przez " com.jabłko.metadane:", ale nie udało mi się.

 8
Author: Gordon Davisson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 07:32:08

Jeśli chcesz programowo ustawić "komentarz Findera" pliku (zobacz odpowiedź @PurplePilot), spróbuj tak:

1) Utwórz zwykły plik plist XML z Twoimi komentarzami:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<string>My Custom Comment</string>
</plist>

2) Konwertuj plist do akceptowanego formatu binarnego:

plutil -convert binary1 my_custom_comment.plist

3) używając xattr, Ustaw metadane kMDItemFinderComment:

xattr -wx "com.apple.metadata:kMDItemFinderComment" "`xxd -ps my_custom_comment.plist`" MyFile

Widać z xattr -l MyFile że komentarze są tam i w odpowiednim formacie binarnym, ale z jakiegoś powodu Finder tego nie pokazuje (przynajmniej dla mnie) w Kolumna komentarzy.

Wyszukiwanie w bazie spotlight za pomocą mdfind "My Custom Comment" zwróci wszystkie pliki z tym komentarzem.

 4
Author: Anderson Freitas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-18 23:24:43

Kliknij prawym przyciskiem myszy i Info, lub cmd + i po wybraniu pliku w Finderze otworzy panel informacyjny i możesz dodać dane u góry, które będą odwoływane w Spotlight. Nazywa się Spotlight Comments. Możesz to zrobić również z katalogami. Nie jestem pewien, czy to najlepszy sposób, ale jest to jedyny sposób, jaki znam.

 2
Author: PurplePilot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-16 07:08:51