Sublime Text como búsqueda difusa del sistema de archivos para Mac OS X

Actualmente estoy usando las capacidades de navegación del sistema de archivos de Alfred. Es bastante impresionante, pero a veces quiero que la búsqueda difusa coincida no solo con el nombre del archivo sino también con la ruta completa.

Por ejemplo, quiero encontrar un archivo pdf con un nombre de archivo muy común (por ejemplo, propuesta.pdf). Y tengo una estructura de directorios como esta:

 - dropbox
   - partners
     - supercorp
       - proposal.pdf
     - megacorp
       - proposal.pdf

Sería bueno si pudiera escribir dro/meg/propospara llegar al archivo de propuestas de la megacorporación. La respuesta puede ser el complemento Alfred o alguna configuración, pero aceptaré cualquier solución que me permita navegar rápidamente a este archivo y realizar alguna acción (por ejemplo, revelar en Finder o algo así). La función de " búsqueda mientras escribe " es muy importante.

UPD Acabo de encontrar una pregunta similar . Parece que falta la función de coincidencia de ruta completa porque mdfindsolo está buscando el nombre del archivo y todas las herramientas lo están usando internamente.

Alfred puede navegar por el sistema de archivos, con autocompletado. Si escribes ~, y luego escribes dro, presiona Enter autocompleta Dropbox. Entonces megcoincidiría megacorp, etc. Eso no es una coincidencia de ruta, pero podría ser útil. Una vez que haya encontrado el archivo en Alfred, presione la tecla de flecha derecha y podrá acceder a las acciones del archivo.
Gracias, alexwlchan. La función de "Navegación de archivos" de Alfred es muy útil y la uso mucho, mientras solo "exploro" la nueva estructura de directorios. Necesito una coincidencia en el caso en que ya estoy familiarizado con la estructura y quiero ir a las cosas más rápido.

Respuestas (7)

Alfred se envía con un flujo de trabajo de ejemplo llamado Búsqueda dinámica de archivos que hace algo similar a la búsqueda aproximada:

https://www.alfredapp.com/blog/tips-and-tricks/how-to-get-the-results-you-want-in-alfred-every-time/

https://www.alfredforum.com/topic/11981-buscando-en-archivos-en-una-ubicación-específica/?do=findComment&comment=62957

Alfred buscando en directorios y nombres de archivo al mismo tiempo

Para agregarlo, haga clic en [+] en la parte inferior de las preferencias de Flujos de trabajo y elija Ejemplos > Búsqueda dinámica de archivos.

  1. Escriba "ff" en Alfred para seleccionar primero un ámbito de búsqueda
  2. Luego escriba el nombre del archivo que está buscando dentro de esa carpeta

Puede encontrar más documentación sobre la función de filtro de archivos de Alfred aquí https://www.alfredapp.com/help/workflows/inputs/file-filter/

Hay un atributo kMDItemPath, pero no se puede usar en consultas. Sin embargo, puede grep la salida de mdfind:

$ pp() { path="/${1%/*}/"; mdfind "name:${1##*/}" | grep -i "${path//\//.*\/}"; }
$ time pp desk/ante
/Library/Desktop Pictures/Antelope Canyon.jpg
0.365

Hacer coincidir kMDItemFSName suele ser mucho más lento:

$ time mdfind "kMDItemFSName=\"ante.*\"c" | grep -i '/desk.*/'
/Library/Desktop Pictures/Antelope Canyon.jpg
10.232

Intenté crear un filtro de script como este en Alfred:

q="{query}"

shopt -s nocasematch

amp() {
  local o=${1//&/&}
  o=${o//</&lt;}
  printf %s "${o//>/&gt;}"
}

output='<?xml version="1.0"?>
<items>
'

while IFS= read -r l; do
  path=$(amp "$l")
  output+="<item>
<arg>$path</arg>
<title>$(amp "${l##*/}")</title>
<subtitle>$path</subtitle>
<icon type=\"fileicon\">$path</icon>
</item>
"
done < <(if [[ $q =~ .+/.+ ]]; then
  dir=${q%/*}
  mdfind "name:${q##*/}" | while IFS= read -r l; do
    [[ ${l%/*} = */${dir//\/*/}* ]] && echo "$l"
  done
else
  mdfind "kind:folder name:$q"
fi | head -n20)

echo "$output</items>
</xml>"

Sin embargo, no pude hacer que funcionara de manera confiable y, a menudo, tomó varios segundos actualizar los resultados.

Gran respuesta. También creo un filtro de secuencia de comandos de prueba de concepto simple para Alfred, usando mdfind | grepway. Ver esencia . Sin embargo, está muy lejos de ser ideal. Intentaré usarlo por mi cuenta durante un tiempo para corregir algunos errores y tal vez encuentre algunas mejoras. Pero por ahora no creo que este enfoque (o el suyo) se pueda usar en la sólida solución lista para usar.

Puedes probar Findspot . Findspot es compatible con estas funciones

  1. Búsqueda difusa como Control-P de Sublime Text
  2. Búsqueda de ruta completa
  3. Busca mientras escribes

Aquí hay una captura de pantalla de Findspot cuando usa su ejemplo:

ingrese la descripción de la imagen aquí

En realidad, puede omitir las barras y aún obtendrá el mismo resultado.

Easy Find, gratuito, de DevonTechnologies le permite buscar archivos, carpetas o ambos, en cualquier cosa, desde carpetas individuales o en todo el disco, así como usar criterios fácilmente seleccionados: borroso, invisible, nombre, contenido, etc.

Es difícil estimar cuántos cientos de horas me ha ahorrado a lo largo de los años mientras Apple se entretiene con Spotlight y la búsqueda guardada. Encuentra, casi instantáneamente, cualquier cosa .

Acabo de probar Easy Find y no encontré ninguna forma de hacer coincidir la ruta completa del archivo; solo coincide con el nombre del archivo, como Alfred y Spotlight. Tal vez me estoy perdiendo algo sin embargo.
Todas las columnas habituales están allí (tamaño, fecha, etc.), a veces solo es necesario arrastrarlas más. "Dónde" muestra el camino. Además, al hacer clic en el encabezado de una columna se ordena.
Las columnas están ahí, pero la búsqueda solo coincide con el nombre del archivo. Si me equivoco, agregue instrucciones precisas sobre cómo hacerlo funcionar.
En cuanto a la coincidencia de búsqueda, debe configurarse en todas las opciones del lado izquierdo. Archivos y/o carpetas, visibles o no, etc. Reduzca la ubicación para buscar en el menú desplegable en la parte superior derecha que comienza con el nombre del disco duro.

Agregue esto en ~/.bash_profile (puede reemplazarlo cdcon open)

export PATH=$PATH:~/bin

cds(){
  cd "$(find . -type d -maxdepth 3 | selecta)"
}

Y agregue selecta de https://github.com/garybernhardt/selecta/blob/master/selecta en ~/bin

¡Ahora, cuando inicie una terminal, puede escribir cds y comenzar a buscar!

Archivo AppleScript para abrir iTerm e ingresar cds automáticamente: cds.applescript

activate application "iTerm"
tell application "System Events" to keystroke "t" using command down
tell application "iTerm" to tell session -1 of current terminal to write text "cds"

puede probar el script usando el comando osascript cds.applescriptIncluso podría configurar un atajo de teclado para llamarlo: http://www.macdevcenter.com/pub/a/mac/2007/06/08/hit-and-run-launching- applescripts-con-atajos-de-teclado.html?page=1

He estado buscando lo mismo durante muchos años y finalmente encontré GoToFile , ¡que parece ser exactamente lo que estamos buscando!

¿Por qué necesita una búsqueda difusa en Spotlight, si la terminal está aquí? abrir dro[ficha]meg[ficha]prop[ficha]

también puede configurar su .bash_profile para adicionales.

¡Bienvenido a Ask Different! Estamos tratando de encontrar las mejores respuestas y esas respuestas proporcionarán información sobre por qué son las mejores. Las respuestas deben ser independientes, así que explique por qué cree que la respuesta que proporcionó resolverá el problema o es mejor que otras. Proporcionar enlaces como información de apoyo también puede ayudar al OP y a otros a encontrar información adicional por sí mismos. Consulte Cómo responder sobre cómo proporcionar una respuesta de calidad. - De la revisión