На самом деле то, что большинство людей видит в Spotlight, отражает лишь часть мощи, заключенной в Leopard.
Например, как быть, если вам нужно увидеть все файлы, открывавшиеся за последние сутки, исключая электронные письма и записи адресной книги? Или если вы хотите собрать все документы PDF и файлы PostScript, открывавшиеся за последнюю неделю? С помощью обычных средств Spotlight вы не сможете задать поиск или создать «умные» папки, достаточно умные для подобных задач.
К счастью для продвинутых пользователей Leopard, Spotlight также понимает некий язык запросов с синтаксисом типа языка программирования, позволяющий организовывать более точный и тонкий поиск. С его помощью можно проделывать то, что невозможно выполнить посредством только меню или окна Spotlight.
Знакомство с основами языка запросов можно начать с http://developer.ap-ple.com/macosx/spotlight.html, а оттуда уже попасть на ряд веб-страниц, где внутренний язык Spotlight описывается в полном объеме.
Начать можно и с изучения того, как сам Spotlight использует этот язык запросов. Для этого создайте «умную» папку, вызовите для нее окно Get Info (Свойства). (Для этого выполните на ней Control-щелчок или щелчок правой кнопкой и в появившемся меню выберите Get Info - «свойства».) На панели General отобразится строка текста запроса (Query), который Spotlight незаметно для вас сгенерировал.
При этом выяснится, что базовая команда поиска всегда начинается с kMD-Item. Для поиска по типу файла запрос должен начинаться с kMDItemContent-Type; для поиска по времени открытия - с kMDItemLastUsedDate и т. д. Например, запрос на поиск всех файлов, содержащих ключевое слово «kum-quat», выглядит так: kMDItemKeywords == "kumquat". (Удвоенный символ = означает «равно». Можно также использовать символы <, >, <= и т.д. Звездочки - это символы маски (шаблона), означающие «здесь может быть другой текст, но необязательно; все равно это будет считаться совпадением».) Операцию «и» обозначают двумя амперсандами: &&. Операцию «или» обозначают двумя вертикальными линиями: ||.
Подробнее ознакомившись с этим языком запросов, вы сможете организовывать более сложный поиск. Например, следующий запрос ищет все измененные в течение последней недели аудиофайлы, автором которых является Kevin или Steve:
((kMDItemAuthors == "Kevin"wc || kMDItemAuthors = "Steve"wc) && (kMDItemContentType =="audio"wc || kMDItemContentType = "video"wc)) && (kMDItemFSContentChangeDate == $time.this_week)
А вот как можно найти все документы PDF и файлы PostScript за одну операцию:
((kMDItemContentTypeTree = com.adobe.pdf) || (kMDItemKind = PostScript document))
(Эти кодовые слова по большей части являются осмысленными сокращениями: MD означает метаданные, wc означает «word-based, case-insensitive», т.е. «слова без учета регистра».)
«И где же нужно вводить все эти запросы?» - поинтересуетесь вы. Есть два варианта.
В Finder, выбрав команду File (Файл) - Find (Найти) для вызова диалогового окна поиска, во всплывающем меню Kind (Тип) выберите строку Other (Другое). В бесконечном списке параметров поиска выберите Raw Query (Строка запроса). После этого появится текстовое поле, в котором вы сможете ввести свой запрос. Во-вторых, можно открыть окно терминала и воспользоваться UNIX-эквивалентом Spotlight. Главная команда, которую нужно знать, это mdfind. Например, в строке приглашения терминала можно напечатать mdfind "kMDItemAcquisitionModel == Canon PowerShot S80" (и нажать Enter), чтобы получить список всех фотографий, которые вы сняли этой моделью камеры. Spotlight: Основное руководство? Хмм. Пожалуй, в этом что-то есть.
Примечание
Apple ни за что не отвечает, если вы выбрали комбинацию клавиш, конфликтующую с какой-то другой функцией вашей системы. Например, выбор S-S будет неудачным.
С другой стороны, если вы выберете для Spotlight комбинацию клавиш, зарезервированную Mac OS X для некоторой задачи (например, Shift-S-3), то в окне Spotlight появится маленький желтый предупреждающий значок. На самом деле это кнопка, щелчок по которой открывает панель Keyboard and Mouse (Клавиатура и Мышь), отображающий спорную комбинацию клавиш и позволяющий заменить ее.