Supondo que você saiba ou consiga adivinhar o final do intervalo, você pode usar expansões de chaves :
rm a_{000750..000850}
O texto acima excluirá os 101 arquivos entre a_000750 e a_000850 inclusive (e reclamará sobre nomes de arquivos que se referem a arquivos não existentes). Se você tiver muitos arquivos para isso, use find
:
find . -name 'a_*' | while read file; do
[ "${file#./a_}" -gt 000749 ] && rm -v "$file"
done
Aqui, o find
simplesmente lista todos os arquivos correspondentes a a_*
. A lista é passada para um loop while
, em que cada nome de arquivo é lido na variável $file
. Em seguida, usando os recursos de do bash, se a parte numérica (localizar, imprime arquivos como ./file
, então ${file#./a_}
imprime apenas o número) é 000750
ou maior, o arquivo é excluído. O -v
está lá apenas para que você possa ver quais arquivos foram removidos.
Observe que o acima assume nomes de arquivos sãos. Se seus nomes podem ter espaços, novas linhas ou outros caracteres estranhos, use isso:
find . -name 'a_*' -print0 | while IFS= read -rd '' file; do
[ "${file#./a_}" -gt 000749 ] && rm -v "$file"
done