Исключить папку библиотеки из поиска с помощью команды поиска в Terminal–OS X Mavericks

Я пытаюсь создать AppleScript, который ищет определенную папку с именем keyPRO внутри домашней папки пользователя. Я использую следующий код в моем AppleScript, чтобы сделать это:

do shell script "find ~/ -name 'keyPRO'"

("~/" Означает поиск в домашней папке текущего пользователя.)

Что раздражает, так это то, что каждый раз, когда я запускаю его, Терминал выполняет поиск в моей папке Библиотеки, которая вызывает ошибку "Отказано в доступе", а также другие случайные вещи, которые появляются.

Есть ли способ исключить папку пользователя библиотеки из поиска?

1 ответ

Решение

Первоначально пометка вашего вопроса с помощью shell или, более конкретно, find-util, привлекла бы к нему больше внимания ( терминал не вступает в игру здесь - AppleScript's do shell script не открывает окно терминала, оно просто создает дочерний процесс оболочки.).

do shell script "find ~ -path ~/Library -prune -o -name 'keyPRO' -print"

исключит ~/Library из вашей команды поиска.

Из оболочки беги man find для получения дополнительной информации о find команда.

Тем не менее, обратите внимание, что вы не увидите обычные предупреждения или сообщения об ошибках при использовании AppleScript do shell script, если команда оболочки не выполнена (сообщает ненулевой код завершения) в целом (в этом случае AppleScript выдает ошибку с сообщением об ошибке оболочки в качестве описания).

Предупреждения и сообщения об ошибках отправляются в поток stderr, тогда как do shell script по умолчанию захватывает только стандартный вывод.

Другие вопросы по тегам