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/propos
para 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 mdfind
solo está buscando el nombre del archivo y todas las herramientas lo están usando internamente.
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/
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.
- Escriba "ff" en Alfred para seleccionar primero un ámbito de búsqueda
- 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//</<}
printf %s "${o//>/>}"
}
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.
mdfind | grep
way. 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
Aquí hay una captura de pantalla de Findspot cuando usa su ejemplo:
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 .
Agregue esto en ~/.bash_profile (puede reemplazarlo cd
con 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.applescript
Incluso 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.
alexwlchan
~
, y luego escribesdro
, presiona Enter autocompletaDropbox
. Entoncesmeg
coincidiríamegacorp
, 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.vbo