Terminal: búsquedas de archivos con locate

En macOS puedes trabajar con dos formas de búsqueda. La más conocida es Spotlight que utiliza una arquitectura de índices, que no es más que una base de datos en la que se almacena información y es esa base de datos la que utiliza Spotlight para localizar archivos o contenidos dentro de los archivos. De hecho, y en ocasiones, esa base de datos puede estar en mal estado y es necesario reiniciar ese índex [note]Puedes forzar la reindexación de un disco duro o de todos los discos duros asociados a tu Mac. Aunque el procedimiento habitual es añadirlo a las opciones de Privacidad en el Panel de Control Spotlight en Preferencias del Sistema y retirarlo inmediatamente para que se reindexe el disco, es mucho más rápido hacerlo con el Terminal: simplemente añade el comando

sudo mdutil -E /Volumes/Nombre\ del\ disco\ duro

Recuerda que si el nombre del disco duro tiene espacios en blanco, en el Terminal debes añadir una barra invertida y un espacio en blanco para delimitarlos (tal como está en el ejemplo).

Si quieres reindexar “todos” los discos duros simplemente elimina la ruta la disco y usa:

sudo mdutil -E /

Recuerda que para ambos comandos necesitarás la contraseña del administrador.[/note] o te puedes encontrar con que Spotlight no ha indexado algún archivo (o especialmente carpeta) porque se lo hemos indicado así. [note]Si añades la extensión .noindex a una carpeta esta se comportará como una carpeta, pero no será indexada por Spotlight[/note].

Desde el Terminal es factible realizar búsquedas y disponemos de varias herramientas para ello. De hecho, algunas utilidades relacionadas con las búsquedas como EasyFind, no son más que aplicaciones con un interfaz que aprovechan diferentes comandos del sistema para realizar búsquedas fuera del entorno de Spotlight, es decir, sin confiar en esos índex creados. Estas utilidades utilizan básicamente los comandos grep y find.

grep se utiliza habitualmente para localizar patrones en archivos: básicamente busca dentro del contenido de los archivos y te ofrece una respuesta basada en los parámetros de búsqueda de patrones que le has indicado. grep no usa ninguna base de datos, por lo que iniciará un proceso de búsqueda archivo por archivo por lo que es importante delimitar desde donde a dónde tiene que buscar, ya sea en una ubicación o seleccionando un tipo de archivos específicos[note]O incluso, ambas opciones.[/note].

Después está find, que realiza una búsqueda tradicional basándose en los nombre de archivo pero que no busca en el interior de los mismos. De nuevo, find no usa una base de datos, sino que va utilizado el criterio de búsqueda introducido con el comando para ir comparándolo con los diferentes archivos almacenados en una unidad.

Hay una tercera forma de localizar información y es locate.

locate funciona de forma parecida a Spotlight pero desde el Terminal: indexa las rutas de los archivos del disco para crear una base de datos y a continuación buscar sobre esa base de datos. locate no viene activado por defecto, por lo que hay que cargar primero el daemon que lo gestiona usando el comando:

 sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

para a continuación utilizar locate en el Terminal y encontrar información. La ventaja de locate sobre find es que es menos intrusivo que find ya que no trabaja sobre toda la estructura de archivos en el disco, sino que al usar una base de datos[note]Esta base de datos se actualiza diariamente, de forma general[/note], exige menos recursos a la hora de localizar un archivo.

locate, en términos prácticos, es mejor cuando se trabaja con servidores, ya que no obliga a realizar una búsqueda en la que las unidades de almacenamiento, que ya están siendo utilizadas por múltiples usuarios, reciben una carga adicional con una solicitud a la hora de localizar información.

Otra ventaja de este comando es que la base de datos es mucho más pequeñas comparativamente y resulta fácil buscar en ella, aunque es necesario actualizarla cada cierto tiempo. El comando para actualizar esta base de datos es:

sudo /usr/libexec/locate.updatedb

ya que por defecto esta base de datos solo se actualiza una vez por semana.

0 0 votos
Article Rating
Subscribe
Notify of
0 Comments
Opiniones Inline
Ver todos los comentarios
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x