Ueee!!! pues post numero 100 con la etiqueta Linux! (todos sabemos que es GNU/Linux…) así que os dejo con un script de bash de cosecha propia, quizás se podría hacer de otra forma con menos líneas pero como me han dicho hoy… “en la docencia siempre tienes que comentar -yo lo hago así, pero hay varias formas de hacerlo-“, sabia frase ;)
#!/bin/bash # ¿dónde estoy? FECHA_DIA=`date '+%d'` FECHA_MES=`date '+%m' |tr -d 0` FECHA_HORA=`date '+%H'` FECHA_MINUTOS=`date '+%M'` ((NFECHA_MES=$FECHA_MES-1)) LONG_MES=`echo $NFECHA_MES |wc -w` if [ $LONG_MES -ne 2 ]; then NFECHA_MES="0$NFECHA_MES" fi touch tiempo.txt touch -t $NFECHA_MES$FECHA_DIA$FECHA_HORA$FECHA_MINUTOS tiempo.txt echo "borrando ficheros mas antiguos a un mes" > log.txt find ~/Desktop/borrar/* ! -newer tiempo.txt -exec rm -Rf {} ; >> log.txt ERROR1=`find ~/Desktop/borrar ! -newer tiempo.txt |wc -l` rm tiempo.txt if [ $ERROR1 -ne 0 ]; then ERROR="No se han borrado todos los archivos, revisa que tienes permisos para borrarlos" >> log.txt fi
Pues un poco de explicación:
– Lo primero que hacemos es poner en variables la fecha actual (date) y a mes le restamos lo que queramos (el script está hecho así para poder modificar fácilmente el tiempo que queramos modificar).
– Comprobamos que el día del mes contiene 2 caracteres (wc -w).
– Creamos un fichero de texto vacío y le definimos la nueva fecha (touch y touch -t).
– Borramos los ficheros mas antiguos a un mes (find).
– Y comprobamos que se hayan borrado todos los ficheros (de nuevo con find y wc -l).
En algunos momentos mandamos la salida a un fichero, con > machacamos lo que pudiese haber de aquel fichero y con >> escribimos la salida al final del fichero.