Exclua apenas arquivos com mais de 7 dias: -mtime e localize

1

Encontrou algumas perguntas semelhantes, mas não combinavam bem.

Eu tenho um diretório para backups (sql) e quero excluir todos os arquivos desse diretório com mais de 7 dias, deixando todos os subdiretórios intactos.

Isso é o que eu tenho:

find /var/log/mbackups -mtime +7 -type f -delete

Esta é a maneira correta de realizar o que eu sou depois?

    
por Dehay 01.06.2018 / 18:45

2 respostas

1

Seu comando examinará o diretório de nível superior /var/log/mbackups e também descerá em qualquer subdiretório, excluindo arquivos que correspondam ao critério de sete dias. Ele não excluirá os próprios diretórios.

Se você quiser que um comando examine apenas os arquivos no diretório /var/log/mbackups e não desça aos subdiretórios , é necessário adicionar essa restrição:

find /var/log/mbackups -maxdepth 1 -mtime +7 -type f -delete

Em geral, você pode testar o comando find substituindo a ação -delete por algo inócuo, como -print :

find /var/log/mbackups -mtime +7 -type f -print
    
por 01.06.2018 / 19:03
-3

Aviso: -delete não é padrão (não é portável) e arriscado ao usar gfind .

Lembre-se de que rm é proibido de remover qualquer arquivo que comece com ./ ou .. por motivos de segurança, mas a página gfind man não menciona essa restrição. Por isso, recomendo usar o método oficial:

find /var/log/mbackups -mtime +7 -type f -exec rm {} +
    
por 05.06.2018 / 18:24

Tags