Si en algún momento has intentado crear una tarea que afecte a un grupo determinado de archivos, puede que hayas necesitado hacerlo para archivos viejos, como por ejemplo eliminar archivos anteriores a una fecha. En este caso vamos a ver lo contrario, es decir, como ejecutar comandos sobre archivos creados en la ultima hora.
Los comandos generalmente no soportan una distinción de archivos de este tipo, pero se pueden ejecutar embebidos dentro de otros comandos, como es el caso del comando find, que te permite realizar una búsqueda con muchos parámetros configurables. Dentro de estos parámetros está el de ejecutar otro comando sobre cada uno de los archivos que encuentres con las caracteristicas que le hayas indicado.
Vamos a ver un comando y luego lo explicaremos para que podamos utilizarlo con el que mejor nos convenga.
Buscar archivos creados la última hora y ejecutar un comando sobre ellos en linux
El comando en cuestión es bastante simple y se usa sobre el comando find, el cual podría ser similar a esto:
find nombrecarpeta
En este caso nos va a mostrar en pantalla absolutamente todos los archivos y carpetas que haya dentro del directorio nombrecarpeta, pero podremos acotar las búsquedas a diferentes parámetros.
Supongamos que queremos encontrar los archivos con extensión .jpg y que hayan sido creados en la última hora, el comando quedaría así:
find . -type f -cmin -60 -name '*.jpg'
Y ahora que tenemos el comando para encontrar todos los archivos jpg que se han creado en el directorio que estamos de forma recursiva, vamos a ver como ejecutar un comando sobre cada uno de esos archivos, por ejemplo borrarlos:
find . -type f -cmin -60 -name '*.jpg' -exec rm -f {} ;
Eliminar archivos creados en la última hora desde consola linux
La explicación para la línea de comandos anterior es la siguiente por partes:
- find : es el comando de búsqueda que nos va a ayudar a localizar lo que queremos
- . : indica la carpeta, el punto significa la carpeta actual, pero también podemos poner la ruta completa que queramos
- -type f : estamos indicando que queremos tipo fichero, -type d sería que buscamos directorios en lugar de archivos
- -cmin -60 : con cmin le indicamos que buscamos archivos creados y con -60 significa que hace 60 minutos (por eso el – de negativo)
- -name ‘*.jpg’ : aquí indicamos que en los archivos tiene que estar la extensión .jpg, podríamos buscar archivos que tubiesen hola en el nombre con ‘*hola*’ por ejemplo
- -exec : esto inicia la ejecución de un comando secundario
- rm -f : comando para eliminar un archivo de forma forzada sin preguntar
- {} : estos corchetes funcionan como variable, será la ruta completa al archivo que coincida con la búsqueda
- ; : fin del comando a ejecutar (entre -exec y 😉
Con esta línea podremos ejecutar cualquier tipo de comando sobre archivos de nuestra elección creados los minutos en el tiempo que queramos. En el caso de ser por ejemplo un día pondríamos -1440, etc.
Si conoces alguna forma alternativa de realizar esta orden o quieres compartir la utilidad que le has dado no dejes de comentar.