Buscar los archivos modificados en un intervalo de tiempo con find

Find es uno de los comandos más utilizados en sistemas Unix-like para localizar archivos dentro de su estructura de directorios. En GNU/Linux nos lo encontramos formando parte del paquete findutils.

Generalmente esas búsquedas las hace siguiendo unos criterios especificados por el usuario. En esta ocasión, vamos a hacer que nos muestre aquellos archivos que han sido modificados, en un periodo de tiempo determinado.

  • Si queremos saber los archivos y directorios que se han modificado desde el último día podemos ejecutar:
find -mtime -1
  • Desde hace una semana:
find -mtime -7
  • Podemos buscar algo más cercano, en este caso por minutos (los últimos 120′ en el ejemplo):
find -mmin -120
  • O todo lo contrario…vamos a buscar lo que se cambió hace más de 30 días:
find -mtime +30 -daystart
  • Para no volvernos locos, vamos a concretar algo más. Entre 30 y 40 días:
find -mtime +30 -mtime -40 -daystart
  • La búsqueda se puede dirigir hacia un directorio en concreto. Por defecto de forma recursiva:
find /home/replicante/Documentos -mtime -2
  • O bien estableciendo un nivel de profundidad determinado con -maxdepth:
find -maxdepth 1 /home/replicante/Documentos -mtime -2
  • También podemos pasar la salida a un archivo de texto para estudiarla con mayor comodidad:
find -mtime -1 > archivo.txt
  • Y especificar que tan solo se muestren los archivos en los resultados (nada de directorios o enlaces simbólicos). Para ello añadimos la expresión -type f, en cualquiera de los comandos mencionados anteriormente. Sería algo así:
find -type f -mtime -1
  • Un vistazo al extenso manual de find:
man find

nos va a descubrir múltiples opciones y parámetros, que podemos combinar con estas búsquedas de tipo temporal.

  • Así vemos que podemos añadirle un filtrado por nombre (-name) con expresiones regulares. En este último ejemplo buscamos los archivos de tipo MID que han sido modificados en los últimos 7 días.
find -mtime -7 -name "*.MID"
  • O bien jugar con el tamaño (-size):
find -mtime -7 -size +25M

Similar a -mtime existen otras funciones, que determinan la última vez que se abrió un archivo (atime) o bien fue creado (ctime). Supongo que tendremos ocasión de echarles un vistazo en cualquier otro momento.

6 thoughts on “Buscar los archivos modificados en un intervalo de tiempo con find”

  1. Shamaru Primera says:

    Find siempre es un mundo que no terminamos de descubrir.

    1. tannhausser says:

      A mi me gusta locate para hacer búsquedas sencillas, pero find está lleno de posibilidades.

  2. Silvio says:

    Hola tannhausser!
    Tus comentarios son superútiles!
    Uso muy poco la consola, y con los man, a veces larguísimos, me pierdo. Con tu comentario a mano… lo visitaré con frecuencia!
    Muchísimas gracias!

    1. tannhausser says:

      Gracias Silvio! La verdad es que find a veces es poco lioso de usar y cuesta acordarse de todos los comandos.
      Creo que tb. tendré que visitar esta entrada con frecuencia 🙂

  3. Marcelo says:

    Gracias por estos datos Estimado. Impecable como siempre.

    1. tannhausser says:

      Gracias amigo! Me alegro que te sean útiles.

Deja un comentario