Touch a un fichero con una fecha pasada

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.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.