Búsqueda de ficheros y carpetas en GNU Linux

binocular150Hay muchos comandos de GNU/Linux que usamos en el día a día sin darnos cuenta de todas las posibilidades que nos pueden dar. En éste artículo hablaremos de los comandos de busqueda. Concretamente de find y locate

Muchas veces, en las series de la televisión se crean partidas de búsqueda para encontrar una persona desaparecida o los restos de un accidente de avión. En nuestro caso buscaremos archivos de usuarios que ya no trabajan en nuestra empresa, o que hace más de dos años que se crearon o realizaremos búsquedas con parámetros combinados.

Búsquedas en GNU/Linux con find y locate

El comando más usado es find. Aquí veremos varias de opciones que nos puede dar:

Partiremos de la base de una búsqueda sencilla, por ejemplo, queremos encontrar todos los archivos que contengan la palabra java. ¿Cómo lo hacemos?

  1. #Buscamos todos los archivos que contengan la palabra "java"
  2. find -name "*java*"

Cómo vemos usamos el parámetro -name, para indicar que queremos buscar a partir de un patrón.  Los comodines en ambos lados le indican al comando que puede tener valores a izquierda y derecha.

Vale. Ahora imaginemos que queremos encontrar archivos que se modificaron hace más de un año, en nuestro servidor de ficheros. ¿Cómo lo haríamos?

  1. #Buscamos ficheros modificados hace más de un año
  2. #es decir, 365 días.
  3. find -mtime +366

Claro, resulta que nos salen infinidad de ficheros y directorios, así que tenemos que acotar más la búsqueda.  Ahora buscaremos sólo directorios.

  1. #Añadimos parámetro para buscar sólo directorios
  2. find -mtime +366 -type d

Expliquemos un poco los parámetros que hemos utilizado hasta ahora.

-mtime , nos permite acotar dicha búsqueda, por tiempo, es decir, archivos o directorios que tengan más o menos días desde su creación. Veremos unos ejemplos:

  • -mtime -15 #Nos devolverá ficheros que tienen menos de dos semanas.
  • -mtime +14 #Nos mostrará ficheros con más de dos semanas.

type, nos permite filtrar por tipo.

  • -type -d #Buscaremos sólo directorios
  • -type -f #Buscaremos sólo ficheros
  • -type -l #Sólo enlaces

También podemos buscar ficheros que tienen propietarios o grupos inexistentes:

  1. #Ficheros que no tienen propietario ni grupo
  2. find -nouser -o -nogroup

Bien, podemos usar algún otro comando para localizar ficheros, si, locate es ese comando.

A diferencia de find, locate es mucho más rápido, ya que usa un índice de los ficheros recopilados en el equipo y almacenando sus nombres en una base de datos centralizada. De verdad, si probáis de buscar con los dos comandos, veréis la diferencia. En cualquier caso los decenas de parámetros que tiene find, le hace ser el más usado.

Os dejo un ejemplo:

  1. #"locate" es mucho más rápido que "find", pero es tan simple
  2. #que no se usa mucho.
  3. locate /var/log/*mail*

¿Pero se pueden hacer búsquedas desde el escritorio? Pues claro, en KDE, tenemos KFind, que está integrado dentro de Konqueror y Dolphin.

Espero que os haya sido de interés, ya sabéis que podéis obtener todos los parámetros usando man.

No dudéis en comentar.