Eu não sei o contexto, mas o loop a seguir contém todos os elementos que você precisará: -
n=0; while (($n < 10)); do ((++n)); echo name=out-$n.avi; done
Isso listará os 10 primeiros arquivos da sua sequência.
Após a sua edição, vejo várias respostas.
Uma simples modificação do meu loop original seria: -
n=1; while [ -f out-$n.avi ]; do ((++n)); done; echo name=out-$n.avi
Isso funcionará bem para alguns arquivos, mas se tornará cada vez mais ineficiente à medida que o número de arquivos for chegando às centenas.
Uma resposta mais eficiente seria salvar o número de arquivo mais recente em seu próprio arquivo: -
n='line<avicount.text'; ((++n)); echo "$n">avicount.text; echo name=out-$n.avi
Esse script gerará um novo nome toda vez que for chamado, mas depende do avicount.text
restante sempre em sincronização com os arquivos e nomes em uso.
Uma solução melhor seria usar um registro de data e hora em vez de um número de seqüência: -
echo name=out-'date +%Y%M%d%H%m%S'.avi
Isto dará um nome único baseado no segundo quando o script for chamado, e pode ser útil ter o tempo de criação de um arquivo incluído em seu nome. Esse esquema também permite que arquivos sejam excluídos, arquivados ou movidos à vontade, sem afetar nomes de arquivos futuros.