Desejo excluir arquivos de log com mais de 5 dias de um diretório. Mas a exclusão não deve se basear no registro de data e hora do arquivo. Deve ser baseado no nome do arquivo. Por exemplo hoje data é 07/05/2012 eo diretório contém 10 arquivos de nomes como ABC_20120430.log
, ABC_20120429.log
, ABC_20120502.log
, ABC_20120320.log
etc. Eu quero ser capaz de remover os arquivos, extraindo a data a partir do nome do arquivo.
10
Eu acho que @oHessling quase tem: Não analise ls , e você pode fazer mais no bash:
fonte
four_days=$(echo "puts [clock format [clock scan {4 days ago}] -format %Y%m%d]" | tclsh)
Uma maneira de usar
perl
:Conteúdo de
script.pl
:Para testá-lo, crio alguns arquivos:
Verifique-os com
ls -1
:Execute o script como:
Com a seguinte saída:
fonte
O que você poderia fazer é usar o fato de que seus nomes de arquivos serão classificados em ordem cronológica. Por exemplo, para manter os últimos 5 arquivos:
fonte
rm
menos que saiba que está matando gatinhos toda vez que faz isso. É apenas uma má idéia, se você não sabe por que pesquisar e aprender que sempre existem maneiras melhores de abordar qualquer problema para o qual essa possa ser uma solução.