¿Búsqueda de Spotlight por ruta completa?

Al realizar una búsqueda de Spotlight, ya sea a través del Finder o mediante comandos de terminal, ¿es posible filtrar los resultados con la ruta completa de un archivo, o al menos el nombre de su carpeta principal?

La razón por la que necesito poder filtrar por la ruta completa es que, aunque estoy buscando archivos reales, solo quiero devolver los archivos que se encuentran dentro de las carpetas que coinciden con un patrón particular.

Por ejemplo, considere que tengo un montón de archivos estructurados así:

Jobs
    Foo Poster
        Preview.jpg
        Final.psd
    Bar Poster
        Preview.png
        Final.psd
    Foo Banner
        Preview.jpg
        Final.psd

Este es un ejemplo un poco artificial para simplificar, pero considere ahora que quiero encontrar todas las imágenes de vista previa que se encuentran solo dentro de las carpetas con "Póster" en el nombre.

Podría hacer esto findusando algo como:

 find /path/to/Jobs -ipath *poster/preview*

Sin embargo, lo que realmente me gustaría es una forma de hacer esto usando Spotlight, no solo por la velocidad sino también por las opciones de búsqueda adicionales disponibles (etiquetas, tamaños de imagen, etc.).

¿Es posible hacer esto? Sé que puedo restringir las búsquedas a una sola carpeta, pero esto no sirve de nada ya que lo que realmente necesito es encontrar carpetas que coincidan con un patrón y luego buscar dentro de ellas los archivos reales.

Encontré la opción Contenedor de documentos en la GUI de búsqueda del Finder, pero no parece funcionar como esperaba; parece que debería permitirme comparar con una carpeta principal de un documento, pero este no parece ser el caso.

Suponiendo que esto no sea posible con la GUI del Finder directamente (es decir, requiere un comando de terminal de Spotlight), idealmente me gustaría poder crear una carpeta inteligente si es posible.

Respuestas (1)

Esto no es posible solo con Spotlight. Spotlight no indexa la ruta del archivo como una propiedad del archivo. Por lo tanto, no es posible utilizar la ruta como criterio de búsqueda.

Puede usar mdfind en la línea de comandos para buscar en el índice de Spotlight. Con el parámetro -onlyin puede señalarlo en la parte superior de la jerarquía de carpetas. Puede filtrar los resultados devueltos usando grep.

mdfind -onlyin ~/Downloads/ 'kMDItemContentTypeTree == "public.image"cd' | grep '.*/test.*/.*'

Si necesita ayuda para crear la consulta para mdfind, eche un vistazo a HoudahSpot . Allí puede configurar sus criterios de búsqueda. Luego vaya a Ventana > Consulta sin procesar para encontrar la cadena de consulta de Spotlight que puede usar con mdfind.

Mientras esté en HoudahSpot, también puede usar su capacidad para filtrar los resultados de búsqueda. Encima de los resultados de búsqueda, encontrará un campo de búsqueda que permite filtrar/excluir por nombre/ruta. Aquí puede utilizar el asterisco como comodín.

Divulgación completa: soy el desarrollador de HoudahSpot.

Entonces, ¿definitivamente no hay forma de convertir esto en una carpeta inteligente? Es posible que pueda usar la solución de secuencias de comandos, y solo generar una carpeta llena de enlaces duros y actualizar periódicamente, un poco de espectáculo de terror, ¡pero será visible para hojear visualmente al menos!
Hm, Spotlight tiene un filtro de consulta sin formato. Lo uso para encontrar archivos con cualquier etiqueta, agrupándolos todos juntos. Por supuesto, tendríamos que incorporar de alguna manera el grep en la consulta, entonces.
La consulta sin formato se refiere al lenguaje de consulta utilizado por mdfind.
¿La situación sigue siendo la misma en BigSur que Spotlight no tiene sintaxis para hacer coincidir la ruta completa de un archivo?
@porg Ningún cambio que yo sepa. La solución grep on mdfind sigue siendo la mejor solución integrada que conozco. Si desea una GUI para la tarea, le sugiero que consulte HoudahSpot. Ha agregado filtros grep en el tiempo transcurrido desde la publicación original.