Encuentra cualquier documento, carpeta o archivo en Linux

Encuentra cualquier documento, carpeta o archivo en Linux

Ignacio Sala

Si no somos de llevar una organización a la hora de almacenar los documentos que creamos en nuestro equipo, encontrar cualquier archivo puede ser una labor titánica que nos lleve mucho tiempo, siempre y cuando no utilicemos los diferentes métodos disponibles en Linux para encontrar documentos, carpetas y textos.

Si no queremos vernos obligados a recurrir al sistema de búsqueda de Linux, que por cierto es muy completo, deberíamos comenzar a plantearnos la posibilidad de crear una estructura de directorios que nos permita almacenar correctamente todos los archivos que creamos y/o que llegan hasta nuestras manos. Al menos, debemos tener la idea de almacenar todos y cada uno de los documentos con los que trabajemos o descarguemos en nuestro equipo en un mismo lugar, para, de esta forma, poder realizar la búsqueda en un único directorio y sus correspondientes directorios. De esta forma, también vamos a reducir el tiempo necesario por el sistema para realizar las búsquedas ya que únicamente tendrá que focalizar sus esfuerzos en un único directorio.

No solo lo agradecerá nuestra mente, sino también nuestra productividad, ya que evitaremos perder el tiempo realizando búsquedas continuamente. Además, la tarea de hacer copias de seguridad se reducirá a una serie de directorios y no a todo el sistema. Si no tenemos la costumbre de guardar un orden, al principio nos costará mucho adaptarnos a este nuevo sistema de trabajo, sin embargo, al poco tiempo nos habremos acostumbrado, siendo el siguiente paso, crear subdirectorios dentro del directorio donde almacenamos los archivos para así no depender tanto del sistema de búsquedas de Linux.

Buscar por el contenido del documento

Lo primero que debemos hacer cuando buscamos un documento que no encontramos es recordar una parte del texto que incluye. Tan solo necesitamos conocer unas palabras del texto que se incluye para poder tener la posibilidad de encontrarlo.

A través de terminal

Encontrar documentos que incluyan ciertas palabras y que se encuentren en el directorio Softzone utilizando la línea de comandos de Linux es tan sencillo como utilizar el siguiente comando:

grep -iRl palabras-que-buscamos /home/softzone
  • El parámetro -i buscará el texto independientemente de si se trata de texto en mayúsculas o minúsculas.
  • Con el modificador R, se realizará una búsqueda en todos los subdirectorios de la ubicación que establecemos al final de la línea.
  • La variable l reemplazará el texto del documento que coincide con la búsqueda por el nombre del archivo, que es lo que realmente estamos buscando.

Debemos reemplazar la ubicación final, en este caso /softzone por la ubicación donde queremos realizar la búsqueda de los archivos.

Con la interfaz gráfica

Al utilizar la interfaz gráfica de Linux para buscar parte de un texto que se encuentra en un documento, lo primero que debemos hacer es acceder a la unidad donde se encuentra el archivo.

Si únicamente tenemos una unidad, debemos pulsar sobre la aplicación Archivos. A continuación, pulsamos sobre la lupa situada en la parte superior y, seguidamente, sobre la flecha hacia bajo que se muestra a su izquierda.

Buscar texto en Linux

Pulsamos en Qué y seleccionamos el tipo de documento que queremos buscar, que, en este caso sería Documentos (la opción texto completo debe estar seleccionada).

Finalmente, introducimos el texto del archivo que queremos encontrar y esperamos a que se muestren los resultados, resultados que incluirán la ubicación del documento.

Encuentra las carpetas que buscas

Todas las distribuciones Linux nos permiten hacer búsquedas de carpetas tanto a través de la línea de comandos de terminal como utilizando la interfaz de gráfica.

Con la línea de comandos

Linux, a través del comando find, nos permite filtrar el tipo de resultados que muestra dependiendo del tipo de archivo que sea. Los resultados del comando find, muestran tanto archivos como carpetas.

Si queremos reducir el número de resultados a únicamente carpetas, debemos añadir la variable -type d

find / -type d -iname nombre-del-archivo

Desde GUI

En la barra de tareas, debemos seleccionar la unidad donde se encuentra la carpeta que queremos buscar. Si únicamente tenemos una partición en el sistema, podemos realizar la búsqueda directamente desde la aplicación Archivos.

Desde la ventana de la aplicación Archivos, pulsamos en la lupa situada en la parte superior e introducimos las palabras que se incluyen en el nombre de la carpeta.

Buscar archivos Linux

A diferencia de realizar este proceso mediante comandos, la interfaz no nos permite filtrar el tipo de contenido que se mostrará, por lo que el listado resultante mostrará tantos los archivos como las carpetas.

Las carpetas están representadas por una carpeta mientras que los archivos muestran el icono de la aplicación al que están asociados, si se diera el caso.

Localiza el archivo que necesitas

La búsqueda de archivos a través de terminal en Linux pone a nuestra disposición un gran número de herramientas y variables para filtrar el contenido al máximo, eliminando otras posibles coincidencias.

Desde terminal con find y locate

Si buscamos archivos en Linux, tenemos dos herramientas: find y locate. Mientras que el primero se encuentra disponible de forma nativa, el segundo hay que instalarlo, aunque la sintaxis de comandos es más sencilla.

Con find

Para poder encontrar un archivo por su nombre, es necesario que el nombre incluya palabras que nos ayuden a encontrarlo. Si habitualmente guardas los documentos como Documento1, Documento 2… de nada nos servirá utilizar ni la línea de comandos ni la interfaz gráfica para encontrar los archivos que buscas.

El comando que vamos a utilizar para buscar archivos desde terminal es find. Utilizando el siguiente comando, el sistema se encargará de buscar y mostrarnos todos los resultados que coinciden con el nombre del archivo y que se encuentran en el directorio home y superiores.

find /home -iname nombredelarchivo

Si queremos que la búsqueda se realice en todo el sistema, el código a utilizar es:

find / -iname nombredelarchivo

Para realizar la búsqueda en un directorio, sin buscar en niveles superiores debemos reemplazar la / por un punto «.»

find . -iname nombredelarchivo

Si solo recordamos parte del nombre del documento, nos apoyaremos en el uso de los asteriscos «*».

find .-iname *nombrequerecordamos*

Los asteriscos también podemos utilizarlos si desconocemos la extensión del archivo.

El modificador -iname obliga al sistema a que no distinga entre mayúsculas y minúsculas. Si añadimos -not al comando de búsqueda, se mostrarán todos los archivos que no coinciden con lo que búsqueda establecida.

find . -not nombredelarchivo

También podemos utilizar el parámetro -and para que busque el archivo o carpeta que cumpla los dos criterios de búsqueda que hemos especificado. Otra opción pasa por filtrar los resultados que al menos cumplan uno de los dos criterios de búsqueda utilizando el parámetro -or.

El comando find también nos permite buscar y borrar directamente todos los archivos con el nombre de búsqueda añadiendo -delete al final del comando.

find .-iname nombredelarchivo -delete

Otros parámetros que también podemos utilizar filtrar las búsquedas, una opción ideal para cuando el número de archivos donde buscar es muy elevado, es utilizar los siguientes parámetros:

  • -perm. Nos permitirá filtrar los archivos dependiendo de los derechos que tenga.
  • -atime. Este parámetro nos invita a filtrar por días el último acceso que ha tenido el archivo.
  • -ctime. Se mide en días y nos permite filtrar los resultados por el número de días desde su creación.
  • -mtime. Filtra los resultados dependiendo del número de minutos de la última vez que se accedió a él.
  • -user. Mostrará los resultados en base a su propietario.
  • -group. Este parámetro mostrará los archivos según el grupo.
  • -type. Parámetro ideal para filtrar por tipos de archivos. Los tipos de archivo en Linux son f para archivo y d para directorio. Si queremos buscar archivos el parámetro a utilizar será -type f mientras que para buscar carpetas será -type d. También podemos buscar enlaces, cuyo tipo de archivo es l.
  • -size. Este parámetro es especial útil cuando buscamos archivos que ocupan un determinado espacio, por lo que es ideal para buscar archivos que podemos eliminar del equipo. Debemos acompañar el parámetro junto con el tamaño de archivo que buscamos (no funciona para carpetas). Si, por ejemplo, buscamos un archivo que ocupen más de 1 GB, el comando será -size 1G. Si buscamos un archivo entre 1 GB y 2 GB, reduciendo así el número de posibles resultados, el parámetro a utilizar junto con comando find será -size +1G -and -size -2G

También podemos mejorar los resultados que nos ofrece este comando optimizando su eficacia. Para hacerlo, tenemos tres opciones diferentes.

  • -o1. El parámetro -o2 comenzará a filtrar los resultados de la búsqueda por nombre. Este parámetro se sitúa justo a continuación del comando find.
  • -02. Con este parámetro, find mostrará en primer lugar el nombre de archivo y su tipo. Al igual que el anterior, se utiliza justo a continuación del comando find.
  • -o3. Este parámetro indicará al comando find que debe mostrar los resultados de forma más eficiente.

Utilizando Locate

El comando Locate, nos ofrece resultados más rápidos, siempre y cuando estemos buscando archivos que hemos creado nosotros y que tenemos ubicados en algún lugar del sistema. Esto se debe a que únicamente realiza las búsquedas en la base de archivos, no en todo el sistema.

Lo primero que debemos hacer es instalarlo utilizando el comando

sudo apt-get install mlocate

Para realizar una búsqueda utilizando este comando, utilizaremos el siguiente comando

locate nombredelarchivo

Este comando, también incluye una serie de variables que nos permite afinar en los resultados de búsqueda. Si añadimos la variable -r y el símbolo $ junto al nombre del archivo, únicamente se mostrará ese archivo en concreto.

locate -r nombredelarchivo$

Para que el comando no distinga entre mayúsculas y minúsculas, añadimos la variable -i

locate -i nombredelarchivo

Cuando el número de resultados es muy elevado, locate nos permite establecer el número máximo de resultados que se muestre con el comando -n, seguido del número de archivos.

locate nombredelarchivo n 10

Si los resultados de búsqueda de archivos en Linux que se obtienen con locate hacen referencia a archivos que ya han sido eliminaos, debemos actualizar la base de datos utilizando el comando

sudo updatedb

A través de la interfaz de usuario

Para buscar archivos en Linux utilizando la interfaz gráfica, debemos utilizar el administrador de archivos en la unidad donde se encuentra el archivo, o donde creemos que debería estar. Si queremos ampliar el número de directorios en los que buscar, debemos iniciar la búsqueda en el directorio raíz. De esta forma, la interfaz gráfica de Windows ampliará el rango de búsquedas a todo el sistema y tendremos más posibilidades de encontrarlo.

Buscar archivos Linux

Seguidamente, pulsamos en la lupa situada en la parte superior de la ventana e introducimos el nombre del archivo. Esa misma ventana nos mostrará, segundos después todos los archivos y carpetas que coinciden con el nombre que hemos especificado. Junto al nombre, también se mostrará la ubicación del archivo. Una vez hemos encontrado el archivo, con el botón derecho del ratón podemos acceder la ubicación para mover el archivo a otro directorio donde podamos tener más controlado el archivo que estábamos buscando para así no volver a perderlo.

Cómo funciona el índice de archivos de Linux

Windows, crea un índice de todos los archivos que se encuentran almacenados en la misma unidad donde se encuentra el sistema operativo y podemos ampliar su alcance al resto de unidades conectadas. Linux también tiene su propio índice de archivos, al igual que macOS.

En Linux, este índice de archivos de llama inodo. El inodo es un registro de todos los archivos y directorios almacenados en la unidad del sistema operativo. Cada uno de estos registros incluye, además de la ubicación el tipo de archivo y su tamaño, el ID del propietario y del grupo (si se diera el caso) los permisos de escritura y lectura junto con los datos de modificación, acceso y edición.

Cada registro, es decir, cada archivo está asociada a un número único de inodo. Si duplicamos el archivo, se creará un nuevo número único de inodo, al igual que si creamos un registro idéntico en una base de datos ya que este tendrá un número de registro en este diferente para poder identificarlo.

El número máximo de registro que es capaz de gestionar el inodo de Windows es de 4.300 millones, una cifra que es muy poco probable que podamos alcanzar a nivel doméstico e incluso a nivel profesional, por lo que no debemos preocuparnos por su límite. Si queremos que las búsquedas en Linux sean lo más rápidas posibles, debemos procurar hacer periódicamente limpieza de los archivos que utilizamos para así liberar registros en el inodo y que las búsquedas sean más rápidas y sencillas.

Cómo mejorar las búsquedas en Linux

Linux nos permite realizar búsquedas utilizando tanto la interfaz gráfica como la línea de comandos tal y como os hemos mostrado más arriba. Realmente no existe ningún método para mejorar las búsquedas en Linux, pero lo que si podemos hacer para ponérselo más fácil a Linux es comenzar a guardar todos los archivos en un mismo directorio tal y como hemos comentado al inicio de este artículo, ya que, de esta forma, no solo tardaremos menos tiempo en encontrar archivo, sino que, además, evitaremos buscarlo en ubicaciones donde, supuestamente no debería encontrarse.

De paso, la labor de realizar copias de seguridad será mucho más sencilla, ya que tan solo será necesario seleccionar un único directorio y no varios repartidos por todo el sistema. Además, si tenemos la posibilidad de crear una partición independiente para almacenar los datos, mejor, ya que, de esta forma, hacer las búsquedas de archivos y de paso una copia de seguridad será mucho más fácil y sencillo. Además, utilizando las herramientas adecuadas desde Windows (recordemos que no es compatible con el sistema de archivos ext4 de Linux de forma nativa), si tenemos que acceder a los datos almacenados en este sistema operativo, será mucho más sencillo encontrarlos sin tener que navegar por la estructura de archivos y encontrarnos con algún que otro muro que nos permita acceder por carecer de permisos.

Si queremos que los datos no estén disponibles ante cualquier persona que pueda acceder a nuestro equipo, además, podemos cifrar la unidad para que, cada vez que queramos acceder, se nos pida una contraseña de cifrado, contraseña que, obviamente, no podemos perder ya que, de lo contrario, no tendremos forma de recuperar los archivos.

¡Sé el primero en comentar!