4 votos

¿Cómo puedo ver una lista de rutas de archivos en una ventana del Finder desde la línea de comandos?

¿Hay alguna manera de tomar una lista de rutas de archivos de find (o similares) y verlos en una ventana del Finder?

Por ejemplo, digamos que me gustaría ver un solo Ventana del Finder que contiene "todos los .mp3 archivos en la ruta actual y sus subdirectorios, excluyendo el directorio archive/ ".

Me gustaría tomar esta salida:

$ find "$(pwd -P)" -iname "*.mp3 -not -path "./archive/*""
/Users/me/1.mp3
/Users/me/2.mp3
/Users/me/subdir/3.mp3

Y ver esos archivos en una ventana del Finder como si estuviera haciendo una búsqueda normal en el Finder.

Me doy cuenta de que puedo hacer una búsqueda avanzada dentro de Finder, pero para mis propósitos, es demasiado limitada.

Gracias, Erik

2voto

Tina Puntos 16

¿Qué tal si se les asigna temporalmente una etiqueta única (tal vez usando algo como etiqueta ), y luego hacer una carpeta inteligente del Finder para esa etiqueta?

Esto es lo que hice:

  1. Instalar tag con brew install tag .

  2. En el Finder, Archivo > Nueva carpeta inteligente.

  3. Haz clic en "Este Mac".

  4. Haz clic en +, y añade "Etiquetas" "Es" temp0 . (Esto será reemplazado más tarde por una nueva etiqueta temporal).

  5. Haga clic en Guardar, y guárdelo como algo parecido a /Users/youruser/Library/Saved Searches/Custom Tag.savedSearch .

  6. Crea un script como este (con SMART_FOLDER en la ruta anterior, sin la extensión):

    !/bin/bash

    set -e SMART_FOLDER="/Users/youruser/Library/Saved Searches/Custom Tag" # without extension

    pass all arguments to find, and store in array

    IFS=$'\n' RESULTS=($(find "$@")) unset IFS

    assign a temporary label

    LABEL=temp$(date +%s) tag -a "$LABEL" "${RESULTS[@]}"

    create a temporary savedSearch with the new label.

    if we just update it, Finder doesn't seem to notice.

    sed "s/temp0/$LABEL/g" "$SMART_FOLDER.savedSearch" > "$SMART_FOLDER-$LABEL.savedSearch" open "$SMART_FOLDER-$LABEL.savedSearch"

    echo "Showing results for $LABEL. Press return to remove label." read tag -r "$LABEL" "${RESULTS[@]}" rm "$SMART_FOLDER-$LABEL.savedSearch"

  7. Guárdalo como algo así como ffind , en algún lugar de su $PATH por defecto.

  8. Hazlo ejecutable con chmod u+x ffind .

  9. Ahora puedes usarlo igual que find Por ejemplo ffind . -name '*.html' . Pasará sus argumentos a find , asignar una etiqueta temporal a los resultados, crear una carpeta inteligente temporal que encuentre esa etiqueta y abrirla. Luego esperará a que pulses la tecla de retorno.

  10. Al pulsar retorno, se borrará la etiqueta de los archivos y se eliminará la carpeta temporal de smart.

1voto

TN. Puntos 3450

Un breve AppleScript podría funcionar:

tell application "Finder" to reveal {"/Users/me/1.mp3" as POSIX file, "/Users/me/2.mp3" as POSIX file, "/Users/me/3.mp3" as POSIX file}

y puedes ejecutarlo directamente desde el terminal con osascript :

osascript -e 'tell application "Finder" to reveal {"/Users/me/1.mp3" as POSIX file, "/Users/me/2.mp3" as POSIX file, "/Users/me/3.mp3" as POSIX file}'

No soy lo suficientemente hábil con el shell para convertir el find al comando anterior (prefiero usar un editor de texto para esto), pero debería ser factible.

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