Excluir arquivos com mais de 500 dias

9

Eu tenho diretório com arquivos a partir de 2010 ano .. Eu quero excluir todos os arquivos com mais de 500 dias e eu tentei isso:

find /var/log/arc/* -type f -mtime +500 -delete {}\;      

Mas eu entendo isso:

-bash: /usr/bin/find: Argument list too long

Como eu sei, isso significa que há muitos arquivos e find não consegue lidar com eles. Mas mesmo se eu colocar +2000 , que é 3 + anos, eu ainda estou recebendo isso.

O que eu sinto falta aqui?

    
por Garg 29.07.2016 / 13:37

1 resposta

17

Você está perdendo que find não precisa de uma lista de arquivos como entrada. O problema é que o glob /var/log/arc/* se expande para muitos arquivos. No entanto, find recorrerá aos subdiretórios por padrão, portanto, não há necessidade de usar o glob:

find /var/log/arc/ -type f -mtime +500 -delete

-delete é um predicado não padrão. Se sua implementação find não der suporte a isso, você poderá usar:

find /var/log/arc/ -type f -mtime +500 -exec rm -f {} +

em vez disso.

    
por 29.07.2016 / 13:40