2008-09-03 6 views
6

У меня есть пучки вспомогательных файлов, которые генерируются кодом и документами LaTeX, которые мне очень жаль не будет предлагать SpotLight в качестве потенциальных кандидатов поиска. Я не ищу example.log, Я ищу example.tex!Может ли Mac OS X Spotlight быть настроен на игнорирование определенных типов файлов?

Так может ли Spotlight быть сконфигурирован так, чтобы игнорировать, скажем, все файлы .log?

(я знаю, я знаю, я должен просто использовать Quicksilver вместо ...)


diciu @ Это интересный ответ. Проблема в моем случае это:

Выяснить, который импортер обрабатывает ваш тип файла

Я не уверен, если мой тип файла обрабатывается любым одним импортером? Поскольку у них все странные расширения (.aux, .glo, .out, что угодно), я думаю, что невероятно, что есть импортер, который пытается индексировать их. Но поскольку они представляют собой обычный текст, их собирают в виде общих файлов. (Правда, я не знаю много об индексировании Spotlight, так что я мог бы быть совершенно неправильно в этом.)


diciu @ снова: TextImporterDontImportList звучит очень многообещающе; Я пойду и посмотрю, что из этого получится.

Как вы говорите, похоже, что вся система UTI действительно не позволяет не что-то ищет.


@Raynet Making файлы невидимыми это хорошая идея, на самом деле, хотя и относительно утомительно для меня, чтобы создать в общем смысле. Если худшее пришло к худшему, я мог бы дать этот снимок (но, вероятно, после исчерпания других опций, таких как QuickSilver). (О, и SetFile требует Инструменты для разработчиков, но я предполагаю, что все здесь все равно их устанавливают :))

+0

Вы можете купить программу, как Leap или HoudahSpot сделать ниндзя вещи, как это с интерфейсом.Скорее всего, лучше оставить элементы в базе данных и просто использовать лучший инструмент поиска. Например, система Spotlight полностью поддерживает исключение типов файлов. (или вы можете использовать mdfind с такими вещами, как kMDItemContentType! = 'независимо от того, какой вы не хотите " – 2012-10-23 14:13:33

ответ

3

@Will - эти вещи, которые определяют типы называются uniform type identifiers.

Проблема заключается в том, что они представляют собой комбинацию расширений (например .txt) и общих типов (т. Е. Public.plain-text соответствует txt-файлу без расширения txt, основанного исключительно на содержимом), поэтому это не так просто, как поиск расширение.

RichText.mdimporter возможно Импортер, импортирующий ваш текстовый файл. Это должно быть легко проверить, запустив mdimport в режиме отладки на одном из файлов, которые не хотят индексироваться:

 
cristi:~ diciu$ echo "All work and no play makes Jack a dull boy" > ~/input.txt 
cristi:~ diciu$ mdimport -d 4 -n ~/input.txt 2>&1 | grep Imported 
    kMD2008-09-03 12:05:06.342 mdimport[1230:10b] Imported '/Users/diciu/input.txt' of type 'public.plain-text' with plugIn /System/Library/Spotlight/RichText.mdimporter. 

тип, который соответствует в моем примере public.plain-текст.

Я понятия не имею, как вы на самом деле пишете исключение на основе расширения для UTI (например, public.plain-text, за исключением всего, что заканчивается на .log).

Позже редактирования: Я также смотрел, хотя mdimporter бинарный RichText и нашел многообещающую строку, но я не могу понять, если это на самом деле используется (в качестве имени привилегированной или любой другой):

 
cristi:FoodBrowser diciu$ strings /System/Library/Spotlight/RichText.mdimporter/Contents/MacOS/RichText |grep Text 

TextImporterDontImportList 

2

Не знаете, как это сделать на уровне типа файла, но вы можете сделать это на уровне папок:

Источник: http://lists.apple.com/archives/spotlight-dev/2008/Jul/msg00007.html

Make прожектор игнорировать папку

Если вы совсем не можете переименовать папку, потому что другое программное обеспечение зависит от него еще один метод, чтобы идти вперед и переименовать каталог, чтобы закончить в " .noindex ", но затем crea te символическая ссылка в том же месте, указывающая на реальное местоположение с использованием исходного имени.

Большинство программного обеспечения с удовольствием используют символическую ссылку с оригинальным именем, но Spotlight игнорирует символические ссылки и отмечает, что «реальное» имя заканчивается на * .noindex и будет игнорировать это местоположение.

Может быть что-то вроде:

мв ORIGINALNAME OriginalName.noindex пер -s ORIGINALNAME.NoIndex
ORIGINALNAME

Ls -l

lrwxr-хт-х 1 Энди админ 24 9 января 2008 ORIGINALNAME -> OriginalName.noindex drwxr-хт-х 11 374 админ Энди 11 июля 7:03 Original.noindex

2

Вот как это может произведение.

Примечание: это не очень хорошее решение, как обновление системы будет перезаписать изменения вы будете выполнять.

Получить список всех импортеров

 
cristi:~ diciu$ mdimport -L 
2008-09-03 10:42:27.144 mdimport[727:10b] Paths: id(501) (
    "/System/Library/Spotlight/Audio.mdimporter", 
    "/System/Library/Spotlight/Chat.mdimporter", 
    "/Developer/Applications/Xcode.app/Contents/Library/Spotlight/SourceCode.mdimporter", 

Выяснить, который импортер обрабатывает ваш тип файла (например, для импортера Audio):

 
cristi:~ diciu$ cat /System/Library/Spotlight/Audio.mdimporter/Contents/Info.plist 




[..] 
      CFBundleTypeRole 
      MDImporter 
      LSItemContentTypes 
      
       public.mp3 
       public.aifc-audio 
       public.aiff-audio 

Alter PLIST импортера удалить тип вы хотите игнорировать.

реимпорта типа импортера, так что система улавливает изменения:

 
mdimport -r /System/Library/Spotlight/Chat.mdimporter 
1

Единственный вариант, вероятно, заключается в том, что они не индексируются прожектором, поскольку по какой-то причине вы не можете выполнять отрицательные поиски. Вы можете искать файлы с расширением файла спецификаций, но вы не можете искать те, которые не совпадают.

Вы можете попробовать сделать эти файлы невидимыми для Finder, Spotlight не будет индексировать невидимые файлы. Команда для установки kIsInvisible флага файлов:

SetFile -a v [имя файла (ов)]