Comando locate … un buscador integrado en cada distro

Hello 😀

Uno de los comandos que uso mucho es precisamente este: locate

Cada entorno de escritorio tiene un buscador de archivos, en tenemos KFind, existen alternativas para otros entornos como puede ser CatFish, etc. Pero generalmente estoy muy liado y muchas veces me resulta más cómodo usar la misma terminal que tengo abierta, y mediante esta hacer una búsqueda de algo, a tener que abrir otra aplicación (buscador, etc) y poner el parámetro de búsqueda, y entonces buscar…

Por eso uso mucho locate, un comando que nos muestra en literalmente cuestión de segundos todos los resultados que coinciden con nuestra búsqueda.

La principal ventaja que locate ofrece sobre otra cualquier opción, es que es instantáneo, muestra lo que estamos buscando literalmente al momento. ¿como es posible esto? simple… sucede que en nuestro sistema tenemos un índice de todo (o casi todo) lo que tenemos almacenado en él, y locate lo que hace es buscar en ese índice lo que le indiquemos.

Explicado de forma más simple. Cuando buscamos algo como comúnmente hacemos, en ese momento es que se busca en el sistema (carpeta por carpeta…. archivo por archivo) lo que dijimos no? … bueno, imaginen que tengan un listado de todas las carpetas y archivos que tienen en su ordenador, y solo sea mirar en ese listado donde esta X archivo. ¿no es más simple buscar en un archivo de texto de unos pocos MBs, a buscar en TOOOOOOODO su disco duro? 😀

Pero bueno… vayamos al asunto jeje.

Digamos por ejemplo que queremos buscar todos los archivos .ODT que tenemos, abrimos una terminal y en ella escribimos lo siguiente y presionemos [Enter]:

locate -e *.odt

El -e lo pongo para especificar que busque archivos que aún existan, pues el índice con el que trabaja locate muchas veces contiene información de archivos que fueron borrados, y no tiene mucho sentido que nos muestre de resultado archivos que no existen ya no? 🙂

Igual, ahora buscare en mi laptop todo lo que contenga en el nombre “asa” … ponemos lo siguiente:

locate -e asa

¿notan la velocidad no? … impresionante 🙂

Como dato curioso, la base de datos (índice) que usa locate es: /var/lib/mlocate/mlocate.db

Y bueno esto es todo, prueben el comando y me cuentan que tal jaja.

Saludos


20 comentarios

  1.   dhunter dijo

    Un tip, con el comando updatedb se actualiza esta bd.

    1.    sieg84 dijo

      Justo iba a preguntar como se actualiza esa base de datos.

    2.    KZKG^Gaara dijo

      Genial 😀 … otra cosilla que aprendo jejejejeje.
      Oye, un detalle … ¿no les gustaría escribir en el blog directamente? Sé los problemas que hay con la conexión y tal, precisamente por eso se podría configurar para que publiquen por email o algo así 😉

  2.   rogertux dijo

    Muy bueno. En mi caso la base de datos no está en ese directorio ni con ese nombre, pero con un “locate locate” ya está todo arreglado: /var/lib/locatedb

    1.    KZKG^Gaara dijo

      HAHAHA locate locate … joder genial jaja 😀

  3.   davidlg dijo

    a mi me dice

    bash: locate: no se encontró la orden

    1.    proper dijo

      trata como root, aunque no debería ser así.

    2.    rogertux dijo

      Puede que tengas de instalarlo.

    3.    KZKG^Gaara dijo

      Intenta con /usr/bin/locate asd a ver lo que te dice 🙂 … de no funcionarte, revisa que tengas el paquete mlocate instalado, cosa rara… pues he usado Ubuntu, Debian y Arch y en todas está instalado por defecto este comando.

      1.    davidlg dijo

        después de reinstalar

        [david@arch ~]$ usr/bin/locate asd
        bash: usr/bin/locate: No existe el fichero o el directorio
        [david@arch ~]$ locate locate
        locate: no se pudo realizar stat () `/var/lib/mlocate/mlocate.db’: No existe el fichero o el directorio

  4.   Rayonant dijo

    Excelente comando, no lo conocía, y si la velocidad es impresionante!! y un man locate ya me explica el resto, muchas gracias

    1.    KZKG^Gaara dijo

      De nada, un placer 😀

  5.   taregon dijo

    Hmm… mejor que find? habría que hacer una prueba de velocidad o.O

    En mi caso podría hacer las mismas búsquedas, pero así:

    $ find /home/usuario -iname “*.odt”
    $
    find /home/usuario -iname “*asa*”

    Si quisiera encontrar ciertos archivos y saber su tamaño:

    $ find -iname “*.iso” -exec du -h {} \;

    Aunque, de hecho, hasta con ls hago búsquedas dentro del directorio actual, eso si sé donde puede estar hubicado el archivo:

    omega@mega-laptop ~/Imágenes $ ls *.png

    1.    taregon dijo

      Ups, disculpen, se me negreo mas de la cuenta 😐

      1.    KZKG^Gaara dijo

        Nah no te preocupes, si quieres lo arreglo 🙂

    2.    KZKG^Gaara dijo

      Find hace la búsqueda en el momento que lo ejecutas, mientras que locate ya hizo la búsqueda y generó un listado hace tiempo atrás … y cuando lo ejecutas lo que hace es buscar eso que estableciste como parámetro en un archivo de pocos MBs o KBs 😀

      1.    taregon dijo

        Ah, gracias por la 😉 comparación. Jeje, algo tarde en responder pero el trabajo me tiene ocupado 🙂

        Diciéndolo así me recuerda al “index server” de windows al momento de acelerar las búsquedas.

        1.    KZKG^Gaara dijo

          Esto a mí lo que me recuerda es a las búsquedas del escritorio semántico de KDE (Nepomuk específicamente) 😀

          1.    taregon dijo

            Interesante, soy mas del tipo gnome así que no sabia eso de kde :O

  6.   Marta dijo

    alguien me ayuda..he intentado actualizar y me sale updatedb: no se puede abrir un archivo temporal para `/var/lib/mlocate/mlocate.db’
    Por otro lado he usado el locate locate (me encantó) y si me ubica el archivo arriba…
    ¿qué harían en mi lugar? por favor en un idioma para principiantes…y espero esto siga actualizándose

Deja un 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.