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.