Como remover log de arquivo com nome de arquivo

Como remover log de arquivo com nome de arquivo

Suponha que eu tenha arquivos de log com esse 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

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 do arquivo mantenha apenas 30 arquivos. Como resolver isso com um bashscript?

Responder1

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

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

Explicação:(ver:explicar)

  • -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 tenham um tempo de modificação superior a 30 dias
  • -delete: exclua-os

informação relacionada