
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 bash
script?
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 find
comando:
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