Como remover log de arquivo com nome de arquivo

2

Suponha que eu tenha arquivos de log com este formato de nome.

NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30
NameLog.log.2014-10-01
NameLog.log.2014-10-02
NameLog.log.2014-10-03
NameLog.log.2014-10-04

Eu quero excluir apenas o arquivo de log

NameLog.log.2014-09-27
NameLog.log.2014-09-28
NameLog.log.2014-09-29
NameLog.log.2014-09-30

Na verdade, quero que o log de arquivos mantenha apenas 30 arquivos. Como resolver isso com um script bash ?

    
por Ory 06.10.2014 / 07:32

1 resposta

12

A maneira mais fácil de realizar o que você deseja é excluir todos os arquivos do diretório com mais de 30 dias. Você pode usar este comando find :

find /path/to/log/ -maxdepth 1 -name "NameLog.log*" -mtime +30 -delete

Explicação: (ver: explicahell )

  • -maxdepth 1 : não se aprofunde na estrutura de pastas
  • -name "NameLog.log*" : aplica-se apenas ao arquivo de log com esse nome
  • -mtime +30 : que tem um tempo de modificação anterior a 30 dias
  • -delete : exclua-os
por 06.10.2014 / 08:00