Gracias a @ nine9ths por señalar el comando locate
como una opción. Aquí hay algunas observaciones adicionales.
Coincidencia parcial y múltiples términos de búsqueda
A menudo tengo carpetas en las que solo puedo recordar parcialmente los nombres de los archivos y carpetas. Y las carpetas pueden no estar necesariamente en la carpeta principal inmediata (es decir, podría ser la principal de la carpeta principal). Una forma de realizar una búsqueda coincidente parcial de tipo booleano es combinar comandos grep
canalizados. Por ejemplo:
locate AB | grep readme
canalizaría ( |
) todas las rutas que coincidan con AB en grep
. Las rutas restantes 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 entre mayúsculas y minúsculas
La búsqueda de Spotlight parece no distinguir entre mayúsculas y minúsculas, lo que generalmente parece conveniente. Para el mismo comportamiento con locate
y grep
use el indicador -i
.
locate -i AB | grep -i readme
Los comandos
grep
pueden aplicarse repetidamente para filtrar aún más los resultados.
Seleccionar una ruta de una lista
En algunos casos, incluso después de varios vientos, encuentro que todavía puedo quedarme con un puñado de coincidencias y solo quiero seleccionar una de ellas de la lista. Hay varias formas de seleccionar una sola línea por número. Aquí hay un par de opciones para seleccionar, por ejemplo, la línea 4 de alguna lista de rutas desde un locate search
locate AB | grep readme | awk 'NR==4'
Abriendo una ruta seleccionada
Como @nineths observa una vez que se obtiene un solo archivo, la salida se puede abrir con una aplicación predeterminada:
locate foo | xargs open
o con un programa específico en la ruta, como Vim
locate foo | xargs mvim
xargs
no funciona, al menos de forma predeterminada, si la ruta incluye un espacio.
Otra opción es enviar la ruta al portapapeles y pegarla en algún lugar (por ejemplo, en una búsqueda Alfred o en el cuadro de diálogo 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 existen varias alternativas al uso de la línea de comandos para seleccionar y abrir una ruta de la lista de rutas devueltas.
- En iTerm2, mantener presionada la tecla de comando y hacer clic en una URL o en una ruta de archivo / carpeta abrirá la URL o el archivo en la aplicación predeterminada.
Personalización de localizar
Este tutorial de Geek Stuff analiza varias personalizaciones del comando locate
(por ejemplo, , filtrando ciertos directorios y tipos de archivos).
Posibilidad de usar mdfind en su lugar
En general, todos los ejemplos que utilizan la localización anterior podrían reemplazarse con mdfind
.
locate
generalmente hace referencia a archivos de sistema adicionales, mientras que mdfind
accede a los archivos indexados por Spotlight. mdfind
no distingue entre mayúsculas y minúsculas por defecto, lo que generalmente considero conveniente. mdfind
también tiene opciones de búsqueda adicionales, por ejemplo, puede agregar kind:fol
para las carpetas. La principal diferencia es que mdfind
solo busca el nombre del archivo. Por lo tanto, si la información de la ruta se está utilizando para limitar la búsqueda, debe aparecer en los filtros grep
subsiguientes.
Por ejemplo, si quisiera encontrar una carpeta llamada 2012
donde subjectname
aparezca 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 todos los números.
Resumen de pensamientos
-
Velocidad : el comando
locate
se ejecuta más rápido que el comando find
pero a una velocidad similar a mdfind
.
-
Capacidad de filtrar : si tiene información para coincidir parcialmente con el nombre del archivo o si desea usar 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 gran cantidad de gastos generales sintácticos innecesarios.