AppleScript: come cercare i file nella cartella per la stringa e mostrare i risultati nel Finder?

2

Sto provando a creare un servizio basato su Automator che cerca nel mio computer il testo selezionato. (Quando dico "il mio computer, " intendo specificamente Macintosh HD, non questo Mac , perché questo Mac include dischi rigidi esterni.)

Desidero che i risultati della ricerca vengano visualizzati in una nuova finestra del Finder.

È possibile farlo a livello di codice in Applescript o in uno script di shell? Questo non sembra possibile, ma sarebbe l'ideale.

Se questo non può veramente essere fatto a livello di programmazione, allora sarei d'accordo nel realizzare questo "manualmente". Ecco un esempio di come potrebbe manifestarsi quella rotta:

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

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

Tuttavia, non so come cambiare la directory di ricerca. (Sto cercando di evitare clic del mouse script.) Per impostazione predefinita, quando un utente avvia una ricerca nel Finder (ad esempio, quando l'utente preme ⌘ comando + F ), la directory di ricerca è "Questo Mac", indipendentemente dalla directory della finestra del Finder in cui è stata richiamata la funzione di ricerca.

    
posta rubik's sphere 09.12.2017 - 10:32
fonte

1 risposta

2

Se non ti dispiace cambiare una particolare preferenza Finder , ad esempio quando esegui una ricerca: , allora funzionerà la seguente procedura.

Innanzitutto, in Finder > Preferenze ... > Avanzate , imposta Quando esegui una ricerca: a: Cerca nella cartella corrente

Successivamente, crea un Automator Flusso di lavoro del servizio con le sue impostazioni predefinite (il servizio riceve il testo selezionato in qualsiasi applicazione) e aggiungi un Esegui AppleScript < em> action , sostituendo il code predefinito con il codice sotto:

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

Salva il Automator Flusso di lavoro del servizio , ad es. Cerca testo selezionato nel Finder

Se desideri aggiungere un test programmatico e una modifica delle preferenze per Quando esegui una ricerca: è impostato su Cerca nella cartella corrente , quindi aggiungi il seguente codice direttamente dopo on run {input, parameters} e prima del blocco 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

Un'alternativa è lasciare la preferenza Finder predefinita per Quando si esegue una ricerca: a Ricerca in questo Mac e procedere come segue:

  • Apri una nuova finestra Finder su Macintosh HD .
  • Premere: ⌘F
  • Nella barra Cerca , fai clic sul pulsante "Macintosh HD" .
  • Nella barra Cerca , fai clic sul pulsante Salva .

Segui per salvare la ricerca. In questa istanza, ad esempio:

  • Salva come: Ricerca "Macintosh HD"
  • Dove: Ricerche salvate
  • [] Aggiungi a barra laterale (deselezionata)

Nell'esecuzione Esegui AppleScript del Automator Flusso di lavoro del servizio , sostituisci open (POSIX file "/") con il seguente esempio codice , adattato al tuo sistema e come / dove hai salvato la ricerca:

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

Il esempio codice AppleScript sarà quindi:

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

Quest'ultimo metodo lascia le impostazioni predefinite in Finder da solo e raggiunge l'obiettivo senza utilizzare clic del mouse o pulsanti di clic dal Automator Flusso di lavoro del servizio .

Nota: il esempio codice AppleScript è proprio questo e potrebbe richiedere% didelay comandi aggiuntivi, se appropriato / necessario, ad es tra i comandi keystroke come / se necessario.

    
risposta data 09.12.2017 - 12:32
fonte

Leggi altre domande sui tag