AppleScript: Wie kann ich Dateien im Ordner nach Zeichenfolgen durchsuchen und Ergebnisse im Finder anzeigen?

Ich versuche, einen Automator-basierten Dienst zu erstellen, der meinen Computer nach dem ausgewählten Text durchsucht. (Wenn ich „mein Computer “ sage , meine ich ausdrücklich Macintosh HD, nicht diesen Mac , da dieser Mac externe Festplatten enthält.)

Ich möchte, dass die Suchergebnisse in einem neuen Finder-Fenster angezeigt werden.

Ist es möglich, dies programmgesteuert in Applescript oder einem Shell-Skript zu erreichen? Das scheint nicht möglich, wäre aber ideal.


Wenn dies nicht wirklich programmgesteuert erfolgen kann, wäre ich damit einverstanden, dies "manuell" zu erreichen. Hier ist ein Beispiel dafür, wie sich diese Route manifestieren könnte:

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

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

Ich weiß jedoch nicht, wie ich das Suchverzeichnis ändern kann. (Ich versuche, Skript-Mausklicks zu verhindern.) Wenn ein Benutzer eine Suche im Finder initiiert (z. B. wenn der Benutzer ⌘ command+ drückt F), ist das Suchverzeichnis standardmäßig "Dieser Mac", unabhängig vom Verzeichnis des Finder-Fensters dass die Suchfunktion aufgerufen wurde.

Ich habe meine Antwort aktualisiert, siehe Abschnitt: Eine Alternative besteht darin, die standardmäßige Finder- Einstellung für Beim Durchführen einer Suche zu belassen : auf Diesen Mac durchsuchen und Folgendes tun:

Antworten (1)

Wenn es Ihnen nichts ausmacht, eine bestimmte Finder- Einstellung zu ändern, z. B. Beim Durchführen einer Suche: , dann funktioniert Folgendes.

Legen Sie zuerst unter Finder > Einstellungen... > Erweitert die Option Beim Durchführen einer Suche: auf: Den aktuellen Ordner durchsuchen fest

Erstellen Sie als Nächstes einen Automator- Dienst-Workflow mit seinen Standardeinstellungen (der Dienst empfängt ausgewählten Text in jeder Anwendung) und fügen Sie eine Aktion „AppleScript ausführen“ hinzu, wobei Sie den Standardcode durch den folgenden Code ersetzen :

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

Speichern Sie den Automator Service-Workflow , z. B. Search Selected Text in Finder


Wenn Sie einen programmgesteuerten Test und eine Einstellungsänderung für When Performing a Search: auf Search the Current Folder hinzufügen möchten , fügen Sie den folgenden Code direkt nach on run {input, parameters}und vor dem tell application "Finder"Block hinzu.

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

Eine Alternative besteht darin, die standardmäßige Finder- Einstellung für Beim Durchführen einer Suche auf „Diesen Mac durchsuchen “ zu belassen und Folgendes zu tun:

  • Öffnen Sie ein neues Finder- Fenster für den Macintosh HD .
  • Drücken Sie: ⌘F
  • Klicken Sie in der Suchleiste auf die Schaltfläche „Macintosh HD“ .
  • Klicken Sie in der Suchleiste auf die Schaltfläche Speichern .

Folgen Sie den Anweisungen, um die Suche zu speichern. In diesem Fall zB:

  • Speichern unter: Suche nach „Macintosh HD“
  • Wo: Gespeicherte Suchen
  • [] Zur Seitenleiste hinzufügen (nicht markiert)

Ersetzen Sie in der Aktion „AppleScript ausführen“ des Automator- Dienst-Workflows durch den folgenden Beispielcode , angepasst an Ihr System und wie/wo Sie die Suche gespeichert haben: open (POSIX file "/")

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

Der beispielhafte AppleScript- Code wäre dann:

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

Diese letztere Methode lässt die Standardeinstellung im Finder allein und erreicht das Ziel, ohne Mausklicks oder Schaltflächen aus dem Automator Service-Workflow zu verwenden .


Hinweis: Der Beispiel -AppleScript- Code ist genau das und kann gegebenenfalls zusätzliche delay Befehle erfordern, z. B. zwischen den keystroke Befehlen nach/falls erforderlich.