Excluindo arquivos por idade

13

Existe um comando para excluir todos os arquivos em um diretório que não tenha sido modificado em N dias? Eu preciso limpar alguns logs antigos.

    
por user1024 05.05.2012 / 00:48

2 respostas

20

Isto irá apagar todos os arquivos com mais de 5 dias, você pode colocar um -name '*log' lá também para ser mais preciso e você pode querer especificar um maxdepth no comando find também.

find /some/dir -type f -mtime +5 -delete

    
por 05.05.2012 / 00:57
3

Com zsh e (.m+n) qualificadores da glob : . seleciona somente arquivos regulares, m+n seleciona arquivos modificados há mais de n dias; por exemplo. listar os arquivos no diretório atual que foram modificados há mais de 9 dias:

print -rl -- *(.m+9)

adicione D para incluir arquivos de ponto:

print -rl -- *(D.m+9)

ou se você quiser reciclar (e listar, por exemplo, apenas arquivos que terminem com .log ):

setopt extendedglob
print -rl -- **/*.log(.m+9)

substitua print -rl por rm se você estiver satisfeito com o resultado; embora você possa ter que usar zargs se você tiver muitos arquivos (para evitar a lista de argumentos por muito tempo ):

autoload zargs
zargs ./**/*(.m+9) -- rm
    
por 06.08.2015 / 13:49

Tags