BASH - Script simples com comando rm não funciona

BASH - Script simples com comando rm não funciona

Eu fiz este script simples:

#/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

Tenho problemas com a última linha do script. O comando rm não funciona, não exclui o arquivo. A data “2 horas atrás” funciona muito bem, então não há problema com isso.

Responder1

Você parece especificar o nome do arquivo de duas maneiras diferentes:

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

Acima, há, por exemplo, um _ entre o ano e a hora.

Mas a data que você gerou tinha um formato diferente:

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

No entanto, isso ainda não resolveria o problema inerente de conseguir "um encontromais ou menosduas horas atrás", porque leva um único segundo para ir de 13:00:00 a 12:59:59, o que não corresponde ao padrão "2017-11-20_13*" de qualquer maneira.

Eu gostaria de usar find:

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

deve eliminar todos os arquivos *.tar no diretório atual com mais de duas horas (use +119 para ter um minuto de tolerância). Além disso, você pode omitir -deleteao testar se essa abordagem funciona.

Responder2

Acredito que o problema esteja na expansão da $DATEvariável na última linha. Para testar isso, você pode simplesmente adicionar um echona frente do rmcomando e executar o script, ou pode tentar evitar o problema usando ${DATE}em vez de apenas $DATEno rmcomando.

O problema também pode ser que você está tentando excluir um nome de arquivo que não existe, já que parece ter dois formatos de saída de data diferentes especificados, e presumo que os formatos de data devam corresponder entre a criação do tar arquivo e a exclusão duas horas depois.

informação relacionada