AppleScript: Как искать файлы в папке для строки и показывать результаты в Finder?

2

Я пытаюсь создать службу Automator, которая ищет на моем компьютере выбранный текст. (Когда я сказал "мой компьютер, «Я специально имею в виду Macintosh HD, не Этот мак , так как Этот мак включает в себя внешние жесткие диски.)

Я хотел бы, чтобы результаты поиска появлялись в новом окне Finder.

Возможно ли сделать это программно в Applescript или в сценарии оболочки? Это кажется невозможным, но это было бы идеально.


Если это не может быть действительно сделано программно, тогда я буду в порядке с выполнением этого «вручную». Вот пример того, как этот маршрут может проявиться:

tell application "Finder"
    activate
    open (POSIX file "/")
end tell

tell application "System Events"
    keystroke "f" using command down
    keystroke input
end tell

Тем не менее, я не знаю, как изменить каталог поиска. (Я пытаюсь предотвратить скриптовые щелчки мыши.) По умолчанию, когда пользователь запускает поиск в Finder (например, когда пользователь нажимает ⌘ команда + F ), каталог поиска "Этот Mac" независимо от каталога окна Finder, в котором была вызвана функция поиска.

rubik's sphere
источник
Я обновил свой ответ, см. Раздел: Альтернатива - оставить значение по умолчанию. искатель предпочтение При выполнении поиска: в Поиск этого Mac и сделайте следующее:
user3439894

Ответы:

2

Если вы не против изменения конкретного искатель предпочтение, т.е. При выполнении поиска: тогда будет работать следующее.

Первый в искатель & GT; Настройки ... & GT; продвинутый , задавать При выполнении поиска: чтобы: Поиск в текущей папке

Затем создайте Automator Сервисный рабочий процесс с настройками по умолчанию (Сервис получает выделенный текст в любом приложении) и добавляет Запустите AppleScript действие , заменяя по умолчанию код с код ниже:

on run {input, parameters}
    tell application "Finder"
        activate
        open (POSIX file "/")
    end tell
    delay 0.5 -- # Adjust as necessary or comment out/remove if not needed.
    tell application "System Events"
        keystroke "f" using command down
        keystroke input as text
        keystroke return
    end tell
end run

Спасти Automator Сервисный рабочий процесс например, Поиск выбранного текста в Finder


Если вы хотите добавить программный тест и изменение предпочтений для При выполнении поиска: устанавливается на Поиск в текущей папке затем добавьте следующее код сразу после on run {input, parameters} и до tell application "Finder" блок.

if (do shell script "defaults read com.apple.finder FXDefaultSearchScope") is not "SCcf" then
    do shell script "defaults write com.apple.finder FXDefaultSearchScope SCcf; killall Finder"
    delay 1 -- # Adjust as necessary or comment out/remove if not needed.
end if

Альтернатива, это оставить значение по умолчанию искатель предпочтение При выполнении поиска: в Поиск этого Mac и сделайте следующее:

  • Открыть новый искатель окно в Macintosh HD ,
  • Нажмите: ⌘F
  • На Поиск нажмите на «Макинтош HD» кнопка.
  • На Поиск нажмите кнопку Сохранить кнопка.

Выполните, чтобы сохранить поиск. В этом случае, например:

  • Сохранить как: Поиск "Macintosh HD"
  • Куда: Сохраненные поиски
  • [] Добавить на боковую панель (не отмечено)

в Запустите AppleScript действие из Automator Сервисный рабочий процесс заменить open (POSIX file "/") со следующим примером код , с учетом вашей системы и как / где вы сохранили Поиск:

open POSIX file "/Users/me/Library/Saved Searches/Searching “Macintosh HD”.savedSearch"

пример AppleScript код будет тогда:

on run {input, parameters}
    tell application "Finder"
        activate
        open POSIX file "/Users/me/Library/Saved Searches/Searching “Macintosh HD”.savedSearch"
    end tell
    delay 0.5 -- # Adjust as necessary or comment out/remove if not needed.
    tell application "System Events"
        keystroke "f" using command down
        keystroke input as text
        keystroke return
    end tell
end run

Этот последний метод оставляет настройку по умолчанию в искатель в одиночку и достигает цели без использования щелчков мыши или кнопок Automator Сервисный рабочий процесс ,


Обратите внимание пример AppleScript код только это и может потребовать дополнительного delay команды где уместно / необходимо, например между keystroke команды как / при необходимости.

user3439894
источник