2 votos

AppleScript: ¿Cómo buscar archivos en una carpeta por cadena y mostrar resultados en el Finder?

Estoy tratando de crear un servicio basado en el Automotor que busca en mi computadora el texto seleccionado. (Cuando digo "mi ordenador, " Quiero decir específicamente Macintosh HD, no Este Mac porque Este Mac incluye discos duros externos).

Me gustaría que los resultados de la búsqueda aparecieran en una nueva ventana del Finder.

¿Es posible realizar esto programáticamente en Applescript o en un shell script? Esto no parece posible, pero sería ideal.


Si esto no se puede hacer realmente de forma programada, entonces estaría de acuerdo en realizarlo "manualmente". Aquí hay un ejemplo de cómo esa ruta podría manifestarse:

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

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

Sin embargo, no sé cómo cambiar el directorio de búsqueda. Por defecto, cuando un usuario inicia una búsqueda en el Finder (por ejemplo, cuando el usuario presiona ⌘ command + F ), el directorio de búsqueda es "Este Mac," sin tener en cuenta el directorio de la ventana del Finder en el que se llamó a la función de búsqueda.

2voto

user3439894 Puntos 5883

Si no te importa cambiar un particular Buscador preferencia, es decir Cuando se realiza una búsqueda: entonces lo siguiente funcionará.

Primero, en Buscador > Preferencias... > Avanzado en el set Al realizar una búsqueda: a: Busca en la carpeta actual

A continuación, crear un Automator Flujo de trabajo del servicio con su configuración predeterminada (el Servicio recibe el texto seleccionado en cualquier aplicación) y añadir un Ejecute AppleScript acción reemplazando el valor por defecto código con el código abajo:

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

Salve a los Automator Flujo de trabajo del servicio por ejemplo Buscar el texto seleccionado en el Finder


Si quieres añadir un test programático y cambiar las preferencias para Al realizar una búsqueda: que se establece en Busca en la carpeta actual y luego agregue lo siguiente código directamente después on run {input, parameters} y antes de la tell application "Finder" bloque.

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

Una alternativa, es dejar la opción por defecto Buscador preferencia por Al realizar una búsqueda: a Buscando en este Mac y hacer lo siguiente:

  • Abrir un nuevo Buscador ventana a la Macintosh HD .
  • Presiona: ⌘F
  • En el Busca en barra, haga clic en el "Macintosh HD" botón.
  • En el Busca en barra, haga clic en el Guardar botón.

Sigue adelante para salvar la búsqueda. En este caso, por ejemplo:

  • Guardar como: Buscando "Macintosh HD"
  • Dónde: Búsquedas guardadas
  • [] Añadir a la barra lateral (sin marcar)

En el Ejecute AppleScript acción de la Automator Flujo de trabajo del servicio reemplace open (POSIX file "/") con el siguiente ejemplo código ajustada a su sistema y a cómo y dónde guardó la Búsqueda:

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

El ejemplo AppleScript código sería entonces:

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

Este último método deja el ajuste por defecto en Buscador solo y logra el objetivo sin usar los clics del ratón o los botones de la Automator Flujo de trabajo del servicio .


Nota: El ejemplo AppleScript código es justamente eso y puede requerir de más delay comandos cuando sea apropiado/necesario, por ejemplo, entre el keystroke comandos como/si es necesario.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X