Latinoamérica
de.novatoanovato@gmail.com

Comando -locate-

Dedicado al nuevo usuario de software libre

Comando -locate-

Comando locate

El comando locate es una herramienta del tipo findutils para sistemas operativos GNU/Linux. Desarrollada para realizar búsquedas, de forma fácil y muy rápida, de elementos (archivos y directorios) basado en patrones de nombres.
 
Este programa crea una o mas bases de datos de ficheros que actualiza de forma periódica automáticamente, pero que ofrece la posibilidad de ejecutar actualizaciones de manera manual, para ser accedidas en búsqueda de coincidencias por medio del ingreso de un patrón de entrada en la ejecución del comando.

 

Objetivos de éste artículo

El objetivo de este articulo es enseñarle a realizar búsquedas desde la terminal, utilizando el comando locate y servirse de su sintaxis y los parámetros con los que esta cuenta para búsquedas especificas.

Instalación de locate

Es posible que el comando locate, no venga instalado por defecto, esto se da en la mayoría de las distribuciones GNU/Linux. Si este es tu caso, la instalación se lleva a delante de la siguiente manera. Aun así, se encuentra disponible en los repositorios oficiales de casi todas ellas.

Instalar locate en Debian

Para instalar locate en Debian, Ubuntu y/o derivadas, ejecutamos las siguientes lineas de comandos:

Sincronizamos las bases de datos locales con la de los repositorios.

sudo apt update

Si hay actualizaciones, las instalamos.

sudo apt upgrade

Instalamos el paquete mlocate.

sudo apt-get install mlocate

Instalar locate en Archlinux

Para instalar locate en Archilinux y derivadas, ejecutamos las siguientes ordenes:

En primera instancia, sincronizamos las bases de datos locales con la de los repositorios y si hay actualizaciones, las instalamos.

sudo pacman -Syyu

Instalamos el paquete mlocate.

sudo pacman -S mlocate

Instalar locate en Fedora

Si te encuentra en Fedora lo mas probable es que locate venga instalado por defecto, pero si este no llega a ser el caso, podrías instalar esta herramienta ejecutando:

Sincroniza primero las bases de datos de paquetes locales con la de los repositorios y actualiza la paquetería.

sudo dnf update

Instala el paquete mlocate.

sudo dnf install mlocate

Instalar locate en SUSE

Para instalar el comando locate en SUSE o sus derivadas, ejecutamos las siguientes ordenes:

Primero debemos sincronizar y actualizar las bases de datos. Y si encontramos paquetes para actualizar, aceptamos.

sudo zipper update

Luego, instalamos el paquete mlocate.

sudo zipper install mlocate

Sintaxis

El comando de búsqueda locate se corresponde con la siguiente sintaxis:

locate [Parámetro] [Patrón]

Entendiendo por patrón como el recurso que es objeto de nuestra búsqueda.

Actualizar base de datos de locate

El comando locate para realiza las búsquedas haciendo uso de una base de datos que forma parte de esta herramienta y es allí donde locate tiene toda la información indexada. Cuando hacemos peticiones de búsquedas con éste comando, las consulta directamente en busca de coincidencias.

Esta base de datos se encuentra ubicada en el siguiente directorio:

/var/lib/mlocate/mlocate.db

Para que el comando consulte de forma eficiente nuestras peticiones, la base de datos del comando locate debe encontrarse actualizada. Ya que se si realizaron cambios en los elementos de nuestro sistema operativo, estos podrían no quedar indexados en ella y por lo tanto estos cambios quedaran excluidos en las búsquedas.

Si bien la base de datos se actualiza diariamente, también contamos con una herramienta de actualización manual que nos permitirá realizar esta tarea. Para ello, ejecutamos:

sudo updatedb

Una vez hemos actualizado la base de datos de locate, podemos verificar información estadística básica sobre su contenido y tamaño. Ejecutemos la orden:

locate --statistics

Configuración de la base de datos

Para modificar la configuración con la que locate realiza las búsquedas, accederemos al archivo de configuración de esta herramienta, updatedb.conf, haciendo uso de nuestro editor de texto preferido, en mi caso, nano. Es necesario señalar que la modificación debe llevarse a cabo con permisos de administración. La ruta donde se encuentra ubicado el directorio es: /etc/updatedb.conf. Veamos entonces.

sudo nano /etc/updatedb.conf

Donde su contenido es el siguiente:

Donde cada variable indica:

  • PRUNEFS La lista de los filesystem que no serán escaneados.
  • PRUNENAMES El de nombres de directorios que no serán Indexados.
  • PRUNEPATHS Lista de rutas que usan los directorios y que no se indexaran.

Opciones de búsquedas del comando locate

A continuación, analizaremos cada una de las opciones de búsquedas disponibles en la sintaxis del comando locate. Como ésta herramienta se basa en búsqueda por medio de patrones, me gustaría antes intentar explicar o exponer este termino.

¿Qué es un patrón?

En ciencias de la computación, búsqueda por patrones es el acto de comprobación, en este caso, entre cadenas de textos. Donde las la coincidencia por lo general tiene que ser exacta. Estos se describen a menudo por el uso de expresiones regulares, utilizando técnicas tales como retrocesos.

Con locate, somo nosotros quienes ingresamos una cadena de caracteres como patrón, que al ser ejecutada, locate iniciara un proceso de comparación entre nuestro input y su base de datos, imprimiendonos a la salida todas las rutas de elementos coincidentes con el patrón ingresado. Las opciones que forman parte de la sintaxis de locate, nos permitirán hacer búsquedas mas especificas.

Si bien existen varios métodos de comparación por patrones, es solo este el que nos interesa entender para el desarrollo del articulo.

Buscar simple

Para realizar una búsqueda simple con el comando locate, y con simple nos referimos a que nos imprimirá todas las coincidencias que existen entre la base de datos y el patrón que ingresemos, donde nuestra única especificación sera en patrón en si, nos bastara con simplemente ejecutar:

locate -A patrón

Aunque por defecto, si no ingresamos ningún parámetro, locate lo ejecuta de manera implícita. Por lo que:

locale -A patrón es lo mismo que locale patrón.

locale patrón

Veamos un ejemplo donde introduciremos la cadena de caracteres foto como patrón de búsqueda.

locale foto

locale -A foto

 

Nota: Es importante señalar que locate, por defecto, distingue mayúsculas y minúsculas.

Si hacemos la misma ejecución, solo cambiando las letras del patrón de minúsculas a mayúsculas observamos:

El resultado es completamente distinto.

No distinguir mayúsculas y minúsculas

Como vimos en el caso anterior, el comando locate hace búsqueda precisas teniendo en cuenta las coincidencias tanto como las mayúsculas y minúsculas. Este tipo de distinción en informática se conoce como: case sensitive. así mismo, la sintaxis de locate nos permite ignorar las distinciones por mayúscula y minúscula en la búsqueda. Al opción que se nos presenta es -i y se utiliza de la siguiente manera:

Recurrimos al caso anterior para visualizar el efecto en cada instrucción.

locate -A FOTO o lo que es lo mismo locate FOTO.

Donde observamos que no hemos conseguido coincidencia alguna. Pero si utilizamos el parámetro -i, veremos:

locate -i FOTO

 

Contar coincidencias con el patrón ingresado

El comando locate cuenta en su sintaxis con la opción -c, esta junto al patrón de búsqueda que ingresemos, nos permitirán obtener el numero total de coincidencias entre el patrón con las cadenas de la base de datos. En este caso usaremos el patrón del ejemplo anterior para visualizar que el numero de coincidencias es igual a la cantidad de coincidencias arrojadas en ese ejemplo.

locate -c foto

 

Imprimir solo coincidencias existentes

Imprime solo las coincidencias existentes entre el patrón y la base de datos. Pero. ¿Como es esto?. En ocasiones podemos intentar indexar por medio de locate un elemento eliminado recientemente. A pesar de no existir ya en nuestro sistema, si no hubo una actualización reciente de la base de datos, el elemento formara parte de esta, a pesar de haber sido suprimido. EL parámetro -e comprobara, si hay coincidencias en la búsqueda, que estas existan. Pasemos a un ejemplo practico.

Actualizamos la base de datos:

Elegiremos un elemento, para el caso, una imagen nombrada como TUX.png. Alojada en el directorio Imágenes del directorio del usuario /home/cristian.

Lo eliminamos:

rm /home/cristian/Imágenes/TUX.png

Y una vez eliminado lo buscamos con locate:

locate TUX

Vemos que nos sigue devolviendo el elemento como una coincidencia, a pesar de haber sido eliminado. Esto se debe a que este sigue formando parte de la base de datos a pesar de ya no existir en el sistema. Si usamos el parámetro -e, este comprobara si la coincidencia existe.

locate -e patrón

Como vemos, no nos devuelve nada a la salida.

Nota: Cuando la base de dato se actualice, ya sea de forma manual o automática, los elementos eliminados ya no formaran parte de ésta.

Versión disponible de locate

Para obtener información sobre la versión de locate con la que se esta trabajando simplemente ejecutamos:

locate -V

Puedes seguirnos en:

Ayudanos a mantener el sitio con una contribución.
Muchas gracias!

Espero sea de utilidad.
Saludos, Cristian Bellini.

 

Deja una respuesta

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