Atareao con Linux

← Atareao con Linux20 aug · 22 min

ATA 824 Busca como un rayo y alimenta a tu IA

ATA 824 Busca como un rayo y alimenta a tu IA20 aug22 min

<p>¿Sigues usando <b>find</b> y <b>grep</b> como en los 90? Hace unas semanas me puse a buscar un archivo en un repositorio con git, lancé el find de toda la vida, y cuando volví de tomarme un café —literalmente— todavía seguía buscando. El problema es que find se mete en el <i>.git</i>, en los binarios, en sitios donde no debería. Y grep, pues lo mismo, sobre todo si trabajas con Unicode o con repositorios grandes. Así que llevo un tiempo usando <b>fd</b> y <b>ripgrep</b>, dos herramientas escritas en Rust que son órdenes de magnitud más rápidas. Pero lo mejor no es solo la velocidad: es que puedes combinarlas para crear pipelines que alimenten directamente a tu IA local.</p><p><b>fd</b> (44.1k estrellas en GitHub) es un reemplazo directo de find. En los benchmarks oficiales, buscar archivos con <i>fd -u</i> tarda 0.8 segundos donde find necesita 11 segundos con <i>-iname</i> y casi 20 segundos con <i>-iregex</i>. 23 veces más rápido. Y no solo es velocidad: fd respeta <i>.gitignore</i> por defecto, soporta expresiones regulares directamente, y tiene placeholders como <i>{}</i>, <i>{.}</i>, <i>{/}</i> y <i>{//}</i> que te permiten ejecutar comandos sobre cada resultado con <i>-x</i> o pasarlos en lote con <i>-X</i>.</p><p><b>ripgrep</b> (67.4k estrellas) es lo mismo pero para buscar texto. En el kernel de Linux, rg tarda 0.08 segundos donde grep tarda 2.67 segundos. 32 veces más rápido. Y tiene superpoderes que grep ni sueña: salida en JSON con <i>--json</i>, búsqueda en archivos comprimidos con <i>-z</i>, soporte PCRE2 con <i>-P</i> para lookaheads, y un flag <i>--passthru</i> que te muestra también las líneas que no coinciden. Desde la versión 15 también soporta hyperlinks OSC 8 y respeta repositorios de Jujutsu.</p><p>Pero lo que realmente me tiene enganchado es combinarlos. El patrón es sencillo: fd encuentra los archivos que te interesan, ripgrep extrae el contexto relevante, y todo eso se lo pasas a <b>Ollama</b> para que lo procese. Te enseño la función <i>aresumen</i> que me he montado en Bash, y su equivalente en Fish, para preguntarle a mi documentación local sin salir de la terminal. Cosas como "resume todo lo que he escrito sobre Ollama en el último mes" se resuelven con un pipeline de tres comandos. Sin RAG, sin bases de datos vectoriales, sin complicaciones. Solo con un pipe bien puesto y el modelo adecuado.</p><p>También te cuento cómo usar <b>jq</b> para procesar la salida JSON de ripgrep, cómo montar un buscador interactivo con <b>fzf</b> y <b>bat</b>, y los errores más comunes al construir estos pipelines. Si alguna vez has pensado "ojalá pudiera preguntarle a mis propias notas desde la terminal", este episodio te va a gustar. Y si todavía usas find y grep, te aseguro que después de oír los benchmarks no vuelves atrás.</p><p><b>Capítulos del episodio:</b><br>0:00 — Introducción: fd y ripgrep para alimentar a tu IA<br>2:30 — El problema con find y grep tradicionales<br>5:00 — fd: el find que siempre quisiste tener<br>8:00 — Placeholders y expresiones regulares en fd<br>11:00 — ripgrep: el grep con superpoderes<br>14:00 — Salidas estructuradas con JSON y jq<br>16:30 — La combinación estrella: fd + ripgrep con -x<br>19:00 — Pipelines avanzados para filtrar archivos<br>21:30 — Integración con IA local: fd + rg + Ollama<br>24:30 — Alias, funciones y trucos del día a día<br>27:00 — Despedida y conclusiones</p><p><b>Recursos mencionados:</b><br>- fd (sharkdp/fd): https://github.com/sharkdp/fd<br>- ripgrep (BurntSushi/ripgrep): https://github.com/BurntSushi/ripgrep<br>- Ollama: https://ollama.com<br>- jq: https://jqlang.github.io/jq/<br>- fzf: https://github.com/junegunn/fzf<br>- bat: https://github.com/sharkdp/bat<br><br><p>Más información y enlaces en las <a href="https://atareao.es/podcast/824" target="_blank" rel="noopener noreferer">notas del episodio</a></p><ul><li>🌐 Aquí lo puedes encontrar todo 👉 <a href="https://atareao.es" target="_blank" rel="noopener noreferer">https://atareao.es</a></li><li>✈️ Telegra