find . -name 'Task.??*.store.log' | xargs rm -f
Às vezes, meus scripts ficam presos em loops infinitos. Quando o loop cria novos arquivos, as coisas ficam confusas.
Atualmente, tenho este formato de nome de arquivo:
Task.4883.store.log
onde 4883
é um contador.
Eu preciso excluir todos os arquivos, exceto os 10 primeiros (ou seja, contador em 0-9, inclusive). Atualmente, cerca de 10k arquivos são criados antes que eu possa reagir e parar o script. SSDs são muito rápidos.
Fica um pouco mais difícil por rm
não aceitar muitos argumentos:
-bash: /bin/rm: Argument list too long
Ah, e estou atualmente em um mac.
Um POSIX um, pode manipular arquivos que contêm nova linha no nome do arquivo:
find . -name 'Task.??*.store.log' -exec rm -f {} +
com zsh
:
rm Task.<10->.store.log
Para evitar que a lista de argumentos seja longa :
autoload zargs # best in ~/.zshrc
zargs Task.<10->.store.log -- rm