Encontre não removendo arquivos em pastas através do script bash

2

Sou muito novo no bash scripting e estou realmente preso no método find do Ubuntu. Eu quero pesquisar na pasta /opt/ para todas as pastas para ver se elas são mais antigas que uma data específica. Se forem mais antigos, os arquivos dessa pasta devem ser removidos (e a própria pasta também, na verdade). Se a data ainda for muito nova, os arquivos não devem ser tocados.

O que eu tenho no código:

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

As variáveis contêm esses valores:

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

Se a variável $DAYS_TO_KEEP for 2, a data é 2014-11-25 e o nome da pasta é 2014-11-20-daily_testmachine da pasta e seu conteúdo deve ser descartado.

O que estou fazendo de errado é não remover / encontrar 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, eu tenho algo errado no meu formato ou nomeação.

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:

    
por Yenthe 25.11.2014 / 15:36

1 resposta

1

Meu erro foi um erro lógico com -mtime . Eu pensei que meu script estava verificando os nomes, mas -mtime verifica 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 {} \;

Acabei de fazer um sudo touch -d "3 days ago" /filepath/folderToRemove para fazer -mname encontrar a pasta e para garantir que o arquivo tenha idade suficiente para ser removido. Então, este código final remove todas as pastas que são mais antigas que minha variável $DAYS_TO_KEEP

    
por Yenthe 26.11.2014 / 09:49