Cómo buscar archivos a texto completo en distros Linux livianas

Cómo supongo algunos de Uds. sabrán, KDE viene con Nepomuk, que entre otras cosas nos permite buscar archivos o programas muy fácilmente. Basta con empezar a escribir el nombre y ya salen. Algo similar ocurre en Unity o GNOME. Haciendo algunos ajustes, algunos de ellos incluso hasta permiten realizar búsquedas dentro de los archivos (lo que en inglés se denomina «full text search»). Los que hayan utilizado Windows 7 alguna vez también sabrán de lo que hablo: basta con empezar a escribir una palabra para que aparezcan los archivos o programas relacionados.

En las distribuciones más livianas esto es un poquito más difícil de conseguir. Pero el método que les voy a enseñar es MUY liviano (acorde a distros de este tipo) y efectivo.

Elegir el lanzador: dmenu

Mi primera opción fue probar con los lanzadores que no dependen de un entorno o una distro en particular. Me refiero a Synapse (que ahora está de moda), Gnome-Do, Kupfer, etc. Todos ellos comparten una cosa: no pueden realizar búsquedas «full text» (o sea, dentro de los archivos). Además, vienen con un montón de otros plugins que a mi no me aportan demasiado. Eso sin mencionar que no son lo suficientemente «minimalistas» y ligeros.

Quienes utilicen Openbox, Enlightenment o similar probablemente conozcan dmenu. Los que no lo hayan utilizado nunca, les sugiero que visiten este viejo post donde se explican sus características principales. En resumen, se trata de un lanzador de aplicaciones ultra-minimalista y súper-liviano. Pero no es sólo eso, lo que no sabía es que si se lo configura correctamente, también puede servir para mostrar elementos de cualquier lista que le pasemos. Este descubrimiento, abre las puertas a muchas posibilidades…

Para instalar dmenu en Arch basta con abrir un terminal y ejecutar:

sudo pacman -S dmenu

Instalar Recoll

El segundo descubrimiento, fue Recoll. Nuestro amigo Fico nos habló de él hace unos meses, artículo cuya lectura recomiendo.

Recoll es una herramienta muy liviana e independiente de cualquier entorno de escritorio que permite realizar búsquedas a texto completo («full text»). Obviamente, para eso primero deberá indexar los archivos, lo cual puede demorar un rato pero una vez realizada la indexación inicial el resto de las actualizaciones no demora mucho.

Recoll es una interfaz gráfica, fácil de usar y con muchas opciones, diseñada en QT y basada en el motor de búsqueda Xapian.

¿Todavía seguís usando locate, find o catfish? ¡Ja! Seguí leyendo…

Para instalar Recoll en Arch y derivados:

yaourt -S recoll

Notarán que recoll tiene como dependencias opcionales un montón de paquetes:

  • libxslt: for XML based formats (fb2,etc)
  • unzip: for the OpenOffice.org documents
  • xpdf: for pdf
  • pstotext: for postscipt
  • antiword: for msword
  • catdoc: for ms excel and powerpoint
  • unrtf: for RTF
  • untex: for dvi support with dvips
  • djvulibre: for djvu
  • id3lib: for mp3 tags support with id3info
  • python2: for using some filters
  • mutagen: Audio metadata
  • python2-pychm: CHM files
  • perl-image-exiftool: EXIF data from raw files
  • aspell-en: English stemming support

La instalación de estos paquetes permitirá a Recoll indexar el contenido de los tipos de archivo correspondientes. Por ejemplo, antiword, permite a Recoll indexar el contenido de los archivos .DOC, etc.

La selección de componentes adicionales a instalar depende de tus necesidades y de la variedad de tipos de archivos que se encuentren almacenados en tu computadora. No obstante, a no desesperar porque Recoll, luego de indexar nuestros archivos, nos recomendará qué componentes instalar para mejorar su efectividad.

Cómo usar Recoll

Al iniciar Recoll por primera vez, aparecerá la pantalla que se ve a continuación. En caso de que quieras indexar solamente tu HOME (en forma completa), sólo basta con que hagas clic en Iniciar indexación ahora.

Pantalla de inicio de Recoll

Pantalla de inicio de Recoll

Recoll cuenta con poderosas facilidades de búsqueda. Además de ingresar las palabras a buscar también permite búsquedas booleanas asistidas con cláusulas de proximidad, filtrando los tipos de archivos o ubicación. También permite una búsqueda compatible con Xesam, por campo y filtrado por fecha.

La respuesta del programa a la hora de realizar las busquedas y presentar resultados también es sorprendente por su rapidez, e interesante por la manera en que presentan esos resultados, determinando los documentos más relevantes, para los términos de búsqueda que se proporcionan, e incluyendo una vista previa.

En la imagen a continuación, yo decidí mostrar los resultados en una tabla, aunque Recoll viene por defecto con otro estilo para mostrar los resultados, mucho más completo y descriptivo.

Resultados de una búsqueda en Recoll

Resultados de una búsqueda en Recoll

Para ver los paquetes faltantes para que Recoll pueda realizar una indexación completa de tus archivos, basta con ir a Archivo > Mostrar ayudantes faltantes.

Componentes adicionales faltantes

Componentes adicionales faltantes

En Preferencias > Horario de Indexación podés configurar la programación de la indexación de archivos. Obviamente, para que Recoll funcione bien necesita indexar todos tus archivos (o al menos los de la carpeta que te interese, usualmente tu HOME). Para ello, hay 3 alternativas: indexación a mano (mi preferida), indexación a través de cron o indexación al arrancar el sistema.

Programación de la indexación en Recoll

Programación de la indexación en Recoll

Magia: combinar Recoll y dmenu… ¿acaso es posible?

Sí, sí lo es. El truco está en saber que dmenu no sólo permite listar aplicaciones sino cualquier cosa que le pasemos. Sólo hay que descubrir cómo hacer búsquedas en Recoll mediante un terminal y pasarle los resultados a dmenu.

La magia se consigue, como no podía ser de otra manera, a través de un sencillo script, cuya autoría es de Massimo Lauria y que me atreví a modificar ligeramente para traducirlo al español.

Descargar script

Guardá el archivo (supongamos, busq-recoll.sh). Otorgale permisos de ejecución (sudo chmod +a busq-recoll.sh) y asignale una combinación de teclas apropiada. En Openbox, esto se consigue editando el archivo ~/.config/openbox/rc.xml o a través de la interfaz gráfica obkey.

El resultado final: búsquedas a texto completo usando poquísimos recursos. Como diría el Bambino Veira: «¡Belleza!».

dmenu al ingresar el texto de la búsqueda

dmenu al ingresar el texto de la búsqueda

dmenu, mostrando los resultados devueltos por recoll

dmenu, mostrando los resultados devueltos por recoll

Yapa

Quienes usen Ubuntu, pueden obtener resultados similares a través del Lens de Recoll. Para ello, es necesario agregar el PPA correspondiente e instalar los siguientes paquetes:

sudo add-apt-repository ppa:recoll-backports/recoll-1.15-on
sudo apt-get update
sudo apt-get install recoll
sudo apt-get install recoll-lens

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   elav dijo

    Sencillamente genial U_U

  2.   usemoslinux dijo

    Así es… 🙂 Y es MUCHO más rápido y liviano que tu amado KDE… jaja!

    1.    elav dijo

      Puede ser, pero no cambio mi buscador integrado en Dolphin por nada. 😉

      1.    usemoslinux dijo

        Ah… eso sí… Dolphin es otra cosa… palabras mayores.

  3.   AlonsoSanti14 dijo

    y en gnome como lo configuro, para que haga lo que dices el “full text search”?
    espero, me puedas ayudar, ya que, si me gustaría poder buscar documentos de esa forma.

    1.    usemoslinux dijo

      No uso GNOME pero si no recuerdo mal viene con una herramienta que se llama Tracker que sirve para hacer búsquedas a texto completo.
      Saludos! Pablo.

      1.    AlonsoSanti14 dijo

        ok gracias, ahora mismo busco info sobre Tracker.

  4.   gonzalezmd (#Bik'it Bolom#) dijo

    Es bueno conocer estas soluciones. Gracias.

    1.    usemoslinux dijo

      A vos, por comentar. 😉

  5.   maximi89 dijo

    Yo en mi caso conozco algo muy simple que está en todas las distros… es «updatedb» y luego usar «locate archivo», es muy fácil y muy liviano ajaaja

    1.    eliotime3000 dijo

      Sí, pero a veces, recorrer el camino largo tiene algo de divertido.

    2.    usemoslinux dijo

      Eso no es correcto. Con locate y updatedb no es posible realizar búsquedas a texto completo.
      Saludos! Pablo

  6.   gonza_212 dijo

    Muy buen post, interesante información… lo estoy probando.
    Ingreso a la página para descargar el script que dejaste a lo último pero me sale error, te agradecería si podés volver a subirlo.

    Muchas gracias, saludos!

    🙂

    1.    usemoslinux dijo

      Funciona bien. Probá otra vez…

      1.    gonza_212 dijo

        Muchisimas gracias, ahora sí ya lo pude descargar.

        Saludos!

        🙂

  7.   gonza_212 dijo

    Disculpa, pero lo he probado en mi compu y no me funciona. Tengo ArchLinux con el gestor PekWM (sin entorno de escritorio)… pero parece que el script no funciona. Alguien podría ayudarme?

    Muchas gracias, saludos!

  8.   usemoslinux dijo

    Podrías especificar un poco mejor qué es lo que no te funciona??

    1.    gonza_212 dijo

      La verdad es que no sé si se estará ejecutando… en el gestor PekWM existe un archivo llamado «keys» ( que se encuentra en el directorio /home/usuario/.pekwm/ ) donde se configuran las hotkeys (o atajos de teclado), de manera que asigné el script a la conbinación Ctrl+F, pero no sé si estará bien la sintaxis del comando para ejecutarlo.

      Les muestro cómo está escrita la línea correspondiente a esa conbinación de teclas:

      KeyPress = «Ctrl F» { Actions = «Exec `sh busq-recoll.sh`» }

      nota: el script busq-recoll.sh se encuentra en mi home, es decir en /home/miusuario/

      Pero al presionar Ctrl+F no pasa nada… probé modificando la línea para que ejecute dmenu en vez del script y sí funciona.

      Otra de las cosas que hice fue ejecutar dicho script en la terminal, y al hacerlo me muestra lo siguiente:

      $ sh busq-recoll.sh
      busq-recoll.sh: linea 39: error sintáctico, no se esperaba el final del fichero

  9.   gonza_212 dijo

    Disculpa las molestias, ya pude solucionar el problema. Lo que pasó fue que descargué el script desde el paste y de esa forma hay un problema en la codificación que utiliza. Por lo tanto lo que se debe hacer es copiar todo el contenido y pegarlo en un fichero vacío para que no genere ese inconveniente.

    Mil disculpas, muchas gracias igual.

    Saludos!