Hasta el momento de escribir esta entrada, no recuerdo haber utilizado el comando locate con argumentos. Creo que mucha gente hace lo mismo así que vamos a ver unos cuantos ejemplos para ampliar un poco las posibilidades de este comando.
Como muchos ya sabéis, el comando locate permite hacer búsquedas de una cadena de texto en todo el sistema de forma prácticamente instantánea. Estas búsquedas no se hacen directamente contra los filesystem sino contra una base de datos (/var/lib/mlocate/mlocate.db) que se actualiza periódicamente mediante updatedb (en un cron). Dependiendo de la periodicidad de actualización de la base de datos los resultados serán más o menos fiables.
Vamos a ver unos ejemplos de argumentos que podemos pasar al comando locate para ampliar su funcionalidad.
Contar el número de resultados
Con el parámetro «-c» se muestra por pantalla el número de resultados de la consulta en lugar de la lista de ficheros y directorios:
$ locate -c .conf 1681
Buscar un nombre exacto
$ locate conf
En el caso anterior se mostrarán resultados tal que:
/tst/conf /tst/confaaaa /conf/test/prueba /test/conf.test/prueba ...
Para solucionarlo modificamos el comportamiento por defecto (–wholename) por –basename o «-b», de modo que los resultados harán referencia únicamente al base name, o lo que es lo mismo, el último componente del path:
$ locate -b "\conf" /usr/share/speech-dispatcher/conf /usr/src/linux-headers-3.2.0-23-generic/scripts/kconfig/conf
Hemos añadido la contrabarra para evitar convertir «conf» en el comportamiento por defecto de wildcards «*conf*».
Buscar con expresiones regulares:
Podemos construir la búsqueda a partir de expresiones regulares. Eso sí, usando regexp no podemos incluir patrones (la cadena de texto), sólo la expresión regular. Podemos usar –regexp o -r:
$ locate -r .*info.*\.conf.*ms$ /var/lib/dpkg/info/dconf-gsettings-backend:i386.md5sums /var/lib/dpkg/info/dconf-service.md5sums /var/lib/dpkg/info/debconf-i18n.md5sums ...
Resultados sensibles a mayúsculas/minúsculas
El parámetro «-i» nos permite indicar que los resultados hagan caso omiso a mayúsculas/minúsculas.
Búsqueda de resultados reales
Como decía antes, locate utiliza una base de datos para hacer las consultas, no hace uso de los filesystem. Para evitar incongruencias en los resultados, por ejemplo con ficheros que ya han sido borrados y el comando updatedb no ha sido ejecutado todavía, utilizamos el parámetro –existing o -e:
$ locate -e conf
Como siempre, si os es interesante podéis revisar la página man de locate para encontrar más funcionalidades:
$ man locate
gracias por tu ayuda pero como haría para que me muestre solo por ejemplo los tres primero resultados de la búsqueda y no me salga una tremenda lista. gracias y saludos desde Lima Perú