Wyszukaj pliki, które otworzą określoną aplikację w Mac OS X

2

W systemie Mac OS X po dwukrotnym kliknięciu nazwy pliku plik ten otworzy się w aplikacji, która go utworzyła. Dlatego w pliku Mac OS X musi być zapisana informacja o tym, która aplikacja utworzyła ten plik. Pamiętaj, że nie jest to rozszerzenie pliku, plik może mieć dowolne rozszerzenie lub może nie mieć żadnego rozszerzenia.

Dwa pytania dotyczące tej informacji:

  1. Jak mogę wyszukać wszystkie pliki, które otworzą określoną aplikację?

  2. Jak mogę zobaczyć i zmienić aplikację, którą otworzy określony plik?

Jacob Palme
źródło
Tak już nie jest. OS X zmienia swoje zachowanie w ostatnich wersjach, ignorując np. Kody twórców.
Daniel Beck

Odpowiedzi:

2

Aplikacja, w której otworzy się plik, jest identyfikowana według rodzaju przedmiotu . Na przykład „Textin Document Document” otworzy się w TextMate, a „TextWrangler Document Document” otworzy się w TextWrangler. Same aplikacje są odpowiedzialne za dostarczanie tego rodzaju elementów i są one przypisywane do plików, co pozwoli OS X wybrać aplikację, w której można je otworzyć.

Możesz sprawdzić te informacje na pojedynczych plikach za pomocą mdls:

mdls -name kMDItemKind -raw some-file.txt

Tak więc, aby wyszukać wszystkie pliki, które zostaną otwarte za pomocą TextMate, wyszukaj je z tym konkretnym rodzajem elementu :

mdfind 'kMDItemKind == "Plain text document"'

Możesz także ograniczyć to wyszukiwanie do określonego folderu:

mdfind -onlyin /some/folder 'kMDItemKind == "Plain text document"'

Jak znaleźć te ciągi znaków „rodzaju przedmiotu” dostarczane przez aplikacje?

Przejdź do pliku aplikacji, który Cię interesuje, i kliknij go prawym przyciskiem myszy. Wybierz opcję Pokaż zawartość pakietu… i przejdź do opcji Zawartość / zasoby . Otwórz Info.plist .

Znajdziesz tutaj typy dokumentów, które aplikacja może obsłużyć, w tym ich nazwę typu dokumentu , który jest dokładnie tym, którego możesz szukać mdfind.


Jak mogę zobaczyć i zmienić aplikację, którą otworzy określony plik?

Wybierz plik, kliknij go prawym przyciskiem myszy i kliknij polecenie Uzyskaj informacje . Zmień aplikację na liście Otwórz za pomocą:

Inną przydatną aplikacją do obsługi domyślnych aplikacji i powiązań jest RCDefaultApp .

slhck
źródło
2

Jeśli zmienisz powiązanie programu dla pojedynczego pliku, jest on przechowywany w rozszerzonym atrybucie o nazwie com.apple.ResourceFork(AFAICT, zawsze z przesunięciem 0x108) i można uzyskać do niego dostęp z wiersza poleceń za pomocą xattr.

Rozszerzone atrybuty plików można wyświetlić za pomocą ls -l@wiersza poleceń:

$ ls -la@ test.png 
-rw-r--r--@ 1 danielbeck  staff  23580 23 Jun 20:26 test.png
    com.apple.FinderInfo       32 
    com.apple.ResourceFork   1338 
    com.apple.metadata:kMDItemIsScreenCapture      42 
    com.apple.metadata:kMDItemScreenCaptureType    51 

Na przykład jawnie wybrałem Podgląd jako aplikację, aby otworzyć plik w oknie Pobierz informacje .

$ xattr -p -l com.apple.ResourceFork test.png 
com.apple.ResourceFork:
00000000  00 00 01 00 00 00 05 08 00 00 04 08 00 00 00 32  |...............2|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000050  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000080  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000090  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
000000F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000100  00 00 04 04 00 00 00 1A 2F 41 70 70 6C 69 63 61  |......../Applica|
00000110  74 69 6F 6E 73 2F 50 72 65 76 69 65 77 2E 61 70  |tions/Preview.ap|
00000120  70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |p...............|
[snip]

Starsze wersje OS X obsługiwały użycie kodu twórcy w celu określenia aplikacji do otwarcia określonego pliku. Niektóre aplikacje nadal je zapisują i można uzyskać do nich dostęp, analizując metadane pliku Spotlight przy użyciu mdls. W tym przykładzie sprawdzam .pxmplik utworzony przez Pixelmator.

$ mdls test.pxm 
kMDItemAlternateNames          = (
    "test.pxm"
)
kMDItemContentCreationDate     = 2012-06-23 18:23:04 +0000
kMDItemContentModificationDate = 2012-06-23 18:24:12 +0000
kMDItemContentType             = "com.pixelmator.pxm"
kMDItemContentTypeTree         = (
    "com.pixelmator.pxm",
    "public.image",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded               = 2012-06-23 18:23:04 +0000
kMDItemDisplayName             = "test"
kMDItemFSContentChangeDate     = 2012-06-23 18:24:12 +0000
kMDItemFSCreationDate          = 2012-06-23 18:23:04 +0000
kMDItemFSCreatorCode           = "PXMT"
[...]

Ostatni wiersz wyjścia przykładowy kod twórca pokazuje ustawioną przez Pixelmator: PXMT.

Daniel Beck
źródło
Jak mogę wyszukać wszystkie pliki, które mają określoną aplikację jako twórca? Preferowane wyszukiwanie w bazie danych Time Machine, ale takie bazy danych wyglądają jak zwykłe zbiory katalogów i plików w nich zawartych.
Jacob Palme
@JacobPalme Have Time Machine indeksuje dysk i (na przykład Pixelmator) uruchamiamdfind -onlyin /path/to/directory/to/limit/search/to 'kMDItemFSCreatorCode=="PXMT"'
Daniel Beck
Pamiętaj, że kody twórców są używane tylko w starszych wersjach systemu OS X, a nawet nie wyłącznie, dlatego np. .pngPliki pobrane z Internetu bez tych metadanych są otwierane w preferowanej przeglądarce zdjęć. Obawiam się, że Twój cel byłby trudny do osiągnięcia całkowicie.
Daniel Beck