BASH: el script simple con el comando rm no funciona

BASH: el script simple con el comando rm no funciona

He hecho este sencillo script:

#/bin/bash
DATE=$(date +"%d_%m_%Y-%H:%M:%S")
tar -czvf /kopie/bin-$DATE.tar /bin
DATE=$(date --date="2 hours ago" +"%d-%m-%Y_%H")
rm -f /kopie/bin-$DATE*.tar

Tengo un problema con la última línea del script. El comando rm no funciona, no elimina el archivo. La fecha "Hace 2 horas" funciona muy bien, así que no hay problema con esto.

Respuesta1

Parece especificar el nombre del archivo de dos maneras diferentes:

DATE=$(date --date="2 hours ago" +"%d-%m-%Y_%H")

Arriba aparece, por ejemplo, un _ entre el año y la hora.

Pero la fecha que generaste tenía un formato diferente:

DATE=$(date +"%d_%m_%Y-%H:%M:%S")

Sin embargo, esto todavía no resolvería el problema inherente de conseguir "una fechamás o menoshace dos horas", porque se tarda un solo segundo en pasar de 13:00:00 a 12:59:59, lo que de todos modos no coincide con el patrón "2017-11-20_13*".

Yo consideraría usar find:

 find . -name "*.tar"  -maxdepth 0 -cmin +120 -delete

debería eliminar todos los archivos *.tar en el directorio actual que tengan más de dos horas (use +119 para tener un tiempo de gracia de un minuto). Además, puede omitirlo -deleteal probar si este enfoque funciona.

Respuesta2

Creo que el problema está en la expansión de la $DATEvariable en la última línea. Para probar esto, simplemente puede agregar un echodelante del rmcomando y ejecutar el script, o puede intentar evitar el problema usando ${DATE}en lugar de solo $DATEen el rmcomando.

El problema también podría ser que estás intentando eliminar un nombre de archivo que no existe, ya que parece que tienes dos formatos de salida de fecha diferentes especificados, y supongo que se supone que los formatos de fecha coinciden entre la creación del archivo tar. archivo y la eliminación dos horas más tarde.

información relacionada