4 votos

¿Cómo localizar un archivo en Spotlight utilizando la carpeta y el nombre del archivo?

A menudo quiero navegar a un archivo o carpeta que no tiene un nombre único. En cambio, la carpeta padre en combinación con el nombre del archivo o carpetan lo hace único. He aquí algunos ejemplos:

  • Quiero abrir readme.txt en la carpeta llamada ABC en lugar de readme.txt en la carpeta llamada CDE o FGH .
  • Cada año imparto una asignatura en la que se organizan las carpetas subjectname/2011 , subjectname/2012 etc. Quiero poder buscar subjectname 2012 porque 2012 no es único.

Cuando introduzco una parte de la ruta y el nombre del archivo en Spotlight, el archivo no se encuentra. Spotlight no parece tratar la información de la ruta como relevante para la búsqueda.

  • ¿Cuál es una forma rápida de navegar hasta un archivo utilizando spotlight cuando su nombre no es único pero se conoce una palabra o una palabra parcial que aparece en su ruta?
  • Alternativamente, ¿existe otra estrategia para localizar rápidamente un archivo o carpeta por su nombre y una palabra en la ruta del archivo o carpeta?

Actualización, he leído que Spotlight trata la ruta de una manera especial . No se puede utilizar en la construcción de búsquedas.

kMDItemPath
Complete path to the file. This value of this attribute can be retrieved, 
but can't be used in a query or to sort search results. This attribute can’t 
be used as a member of the valueListAttrs array parameter for MDQueryCreate 
or MDQueryCreateSubset.
Value Type:      CFString
Framework:       CoreServices/CoreServices.h
Header:      MDItem.h
Availability:    Available in OS X v10.4 and later.

2voto

Happy Mittal Puntos 179

Si te sientes cómodo abriendo el terminal puedes ejecutar el comando

locate ABC/readme.txt

y le dará la ruta completa de cualquier archivo en su máquina que se llame readme.txt en una carpeta llamada ABC.

Mientras estás ahí puedes copiar y pegar la ruta como un argumento para el open y lo abrirá por ti.

Dando un paso más se puede utilizar la salida de locate como los argumentos para open con xargs

locate ABC/readme.txt | xargs open

Abrirá todos los archivos que tengan ABC/readme.txt en su máquina como si hubiera hecho doble clic en ellos.

0 votos

+1 Gracias. Sabía lo de find pero no el locate comando.

1 votos

Una cosa que debería añadir, locate se maneja desde el locatedb que debe ser actualizado periódicamente. Aparentemente este mantenimiento ha sido removido de los scripts que corrían antes de la 10.6, puede que necesites habilitarlo así sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist osxdaily.com/2011/11/02/…

0 votos

Sí. La primera vez que intenté ejecutar locate en Lion me pidió que ejecutara el comando que mencionas.

2voto

marie Puntos 61

Llevo muchos años buscando lo mismo. Sé que hay toneladas de herramientas de línea de comandos creat, pero quería algo para reemplazar básicamente Spotlight, especialmente desde que Spotlight ha empeorado en Big Sur. Finalmente me encontré con GoToFile que parece hacer exactamente lo que pides.

1voto

Jeromy Anglim Puntos 808

Gracias a @nine9ths por señalar el locate como una opción. He aquí algunas observaciones adicionales.

Coincidencia parcial y términos de búsqueda múltiple

A menudo tengo carpetas en las que sólo recuerdo parcialmente los nombres de los archivos y las carpetas. Y las carpetas no tienen por qué estar en la carpeta padre inmediata (es decir, puede ser el padre de la carpeta padre). Una forma de realizar una búsqueda de coincidencias parciales de tipo booleano es combinar las tuberías grep comandos. Por ejemplo:

locate AB | grep readme

se canalizaría ( | ) todas las rutas que coinciden con AB en grep . El resto de las rutas también coincidirían con readme . Por lo tanto, esto coincidiría con ABC/foo/readme.txt , ABC/foo/readme.md y ABC/readme.txt .

Búsqueda sin distinción de mayúsculas y minúsculas

La búsqueda en Spotlight parece no distinguir entre mayúsculas y minúsculas, lo que en general parece conveniente. Para el mismo comportamiento con locate y grep utilizar el -i bandera.

locate -i AB | grep -i readme

grep se pueden aplicar repetidamente para filtrar aún más los resultados.

Seleccionar una ruta de una lista

En algunos casos, incluso después de varios greps, me encuentro con que todavía puedo quedar con un puñado de coincidencias y sólo quiero seleccionar una de ellas de la lista. Hay varias formas de seleccionar una sola línea por número. Aquí un par de opciones para seleccionar, por ejemplo, la línea 4 de alguna lista de rutas de un locate search

locate AB | grep readme | awk 'NR==4'

Abrir una ruta seleccionada

Como señala @nineths, una vez que se obtiene un único archivo, la salida puede abrirse con una aplicación predeterminada:

locate foo | xargs open

o con un programa especificado en la ruta como Vim

locate foo | xargs mvim

xargs no funciona, al menos por defecto, si la ruta incluye un espacio. Otra opción es enviar la ruta al portapapeles y pegarla en algún sitio (por ejemplo, en una búsqueda de Alfred o en un cuadro de diálogo de Ir a la carpeta del Finder).

locate foo | pbcopy

Alternativa a la selección y apertura de la línea de comandos

Es de suponer que hay varias alternativas al uso de la línea de comandos para seleccionar y abrir una ruta de la lista de rutas devueltas.

  • En iTerm2, si se mantiene la tecla de comando y se hace clic en una URL o en una ruta de archivo/carpeta, se abrirá la URL o el archivo en la aplicación predeterminada.

Personalización de la localización

Este tutorial de Geek Stuff discute varias personalizaciones de la locate (por ejemplo, filtrando ciertos directorios y tipos de archivos).

Posibilidad de utilizar mdfind en su lugar

En general, todos los ejemplos en los que se utiliza locate podrían sustituirse por mdfind . locate generalmente hace referencia a archivos adicionales del sistema mientras que mdfind accede a los archivos indexados por Spotlight. mdfind no distingue entre mayúsculas y minúsculas por defecto, lo que generalmente me parece conveniente. mdfind también tiene opciones de búsqueda adicionales, por ejemplo, puede añadir kind:fol para las carpetas. La principal diferencia es que mdfind sólo busca el nombre del archivo. Por lo tanto, si se utiliza la información de la ruta para limitar la búsqueda, ésta debe aparecer en el siguiente canalizador grep filtros.

Por ejemplo, si quisiera encontrar una carpeta llamada 2012 donde subjectname aparece en la ruta lo siguiente funcionaría

mdfind name:2012 kind:fol | grep subjectname

Tenga en cuenta que name: parecía ser necesario porque el texto era todo números.

Reflexiones resumidas

  • Velocidad : El locate se ejecuta más rápido que el comando find pero a una velocidad similar a la de mdfind .
  • Posibilidad de filtrar : Si tiene información que coincida parcialmente con el nombre del archivo o desea utilizar herramientas de búsqueda adicionales mdfind parece mejor (suponiendo que el archivo esté indexado por Spotlight).

En general, todos estos enfoques parecen un poco complicados y tienen una buena cantidad de sobrecarga sintáctica innecesaria.

1 votos

Tenga en cuenta que no hay ningún requisito de archivo único para xargs open puede canalizar una lista de archivos y abrirá cada uno de ellos. Esto puede ser útil o peligroso. También puede especificar una aplicación para abrirlos (si no tiene ya un equivalente en la línea de comandos) con open -a appname

1voto

Byron Puntos 11

Tal vez quiera consultar Findspot . Findspot admite la búsqueda de rutas completas, por lo que puede incluir el nombre de la carpeta y el nombre del archivo en su consulta.

Aquí hay una captura de pantalla de Findspot utilizando su ejemplo:

enter image description here

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