Además del comando find, en Linux disponemos de otras herramientas para realizar una búsqueda rápida de archivos en Linux: el comando locate. Esta utilidad se utiliza para actualizar la base de datos en la que se mantiene la lista de todos los archivos del sistema. Para poder obtener resultados precisos, es necesario que dicha base de datos se mantenga actualizada, lo cual se lleva a cabo mediante la ejecución del comando updatedb.
Es en este punto donde radica la diferencia entre find y locate: mientras que el primero emplea la estructura del sistema de archivos (o una porción de la misma) para realizar una búsqueda, locate lee la ubicación de los archivos desde una base de datos interna.
Veamos más detalles a continuación.
Búsqueda rápida de archivos con locate
La sintaxis básica de locate es la siguiente:
[pastacode lang=»bash» manual=»locate%20%5BOPCIONES%5D%20%5BPATR%C3%93N%5D» message=»» highlight=»» provider=»manual»/]
donde si se utiliza la opción -r
(o su equivalente --regexp
), PATRÓN puede reemplazarse por una expresión regular. Otra opción muy útil es -i
(sinónimo de --ignore-case
), la cual ignora mayúsculas o minúsculas al examinar el PATRÓN dado.
Por defecto, cuando locate se utiliza sin opciones devolverá TODOS los archivos y directorios que contengan el criterio de búsqueda en su ruta completa (no solamente en el nombre del archivo propiamente dicho). De esta manera, locate txt
se traduce en locate *txt*
y regresa tanto /usr/lib/firmware/qca/NOTICE.txt como /usr/bin/httxt2dbm, por nombrar dos ejemplos.
Si se desea buscar por nombre exacto, podemos utilizar la opción -b
, encerrar el criterio de búsqueda entre comillas simples y colocarle delante una barra invertida para evitar la sustitución de criterio por *criterio* como en el caso anterior. Por ejemplo, locate -b '\txt'
devolverá un objeto cuyo nombre sea exactamente igual a txt.
En la Fig. 1 vemos dos ejemplos adicionales en los que utilizamos expresiones regulares y anulamos la distinción entre mayúsculas y minúsculas al realizar la búsqueda:
[pastacode lang=»bash» manual=»locate%20-r%20usuarios%5BbB%5Dash.txt%20%23%20Utilizar%20expresi%C3%B3n%20regular%0Alocate%20-i%20usuariosbash.txt%20%23%20Ignorar%20may%C3%BAsculas%20y%20min%C3%BAsculas%0Alocate%20usuariosbash.txt%20%23%20No%20devolver%C3%A1%20nada» message=»» highlight=»» provider=»manual»/]
En el último ejemplo de arriba, el comando no devuelve ningún resultado ya que por defecto, locate hará distinción entre mayúsculas y minúsculas.
¡Nos leemos en breve!