Eu tenho diretório com arquivos a partir do ano de 2010. Quero excluir todos os arquivos com mais de 500 dias e tentei o seguinte:
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 podemos lidar com eles. Mas mesmo se eu colocar o +2000
que é mais de 3 anos, eu ainda estou recebendo isso.
O que estou perdendo aqui?
Respostas:
Você está ausente
find
e não precisa de uma lista de arquivos como entrada. O problema é que a glob se/var/log/arc/*
expande para muitos arquivos. No entanto,find
ele recursará em subdiretórios por padrão, portanto, não há necessidade de usar o glob:-delete
é um predicado não padrão. Se suafind
implementação não suportar, você poderá usar:em vez de.
fonte
find: invalid predicate
-delete'`-delete
não leva{}
. Veja atualização. No entanto, sua mensagem de erro parece sugerir que sua versão dofind
não é compatível-delete
. Se você não estiver usando o GNUfind
(o que na maioria dos casos não o fará, a menos que esteja usando o Linux), você precisará usá-lo-exec -rm {} \;
.-exec rm {} \;
Faça o truque.-exec
é definido pelo POSIX .