Encontre a não remoção de arquivos em pastas através do script bash

Encontre a não remoção de arquivos em pastas através do script bash

Sou muito novo em scripts bash e estou realmente preso ao método find do Ubuntu. Quero pesquisar na pasta /opt/todas as pastas para ver se elas são anteriores a uma data específica. Se forem mais antigos, os arquivos desta pasta deverão ser removidos (e a própria pasta também). Se a data ainda for muito nova, os arquivos não deverão ser alterados.

O que tenho no código:

find $BACKUP_DIR -maxdepth 1 -mtime +$DAYS_TO_KEEP -name "*$mystring" -exec rm -rf '{}' ';'

As variáveis ​​contêm estes valores:

BACKUP_DIR=/opt/
TESTDIR=2014-11-25-daily_testmachine
mystring=-daily_testmachine

Se a variável $DAYS_TO_KEEPfor 2, a data será 25/11/2014 e o nome da pasta será 2014-11-20-daily_testmachinea pasta e seu conteúdo deverá ser descartado.

O que estou fazendo de errado para que find não esteja removendo/encontrando esses arquivos e pastas para remover? Não consigo encontrar o erro.

Observação:se eu executar o comando com o nome exato da string da pasta, a pasta será excluída. Então, tenho algo errado no meu formato ou nomenclatura.

find $BACKUP_DIR -maxdepth 1 -name "2014-11-20-daily_testmachine" -exec rm -rf '{}' ';'

Para deixar as coisas mais claras, fiz uma captura de tela para mostrar a configuração:

Responder1

Meu erro foi um erro lógico com -mtime. Achei que meu script estava verificando os nomes, mas -mtimeverificando a data em que o arquivo foi criado. Então meu código final:

DAYS_TO_KEEP=2
find $BACKUP_DIR -maxdepth 1 -mtime +"$DAYS_TO_KEEP" -exec rm -rf {} \;

Eu só tive que fazer um sudo touch -d "3 days ago" /filepath/folderToRemovepara -mnameencontrar a pastaecertifique-se de que o arquivo tenha idade suficiente para ser removido. Portanto, este código final remove todas as pastas mais antigas que minha variável$DAYS_TO_KEEP

informação relacionada