Se você puder obter sua lista de arquivos como um conjunto de argumentos para o rename do Perl, isso pode ser feito facilmente:
rename 'no warnings; $a++; s!^(.*/)?(.*)!$1$a-$2!' "$@"
As variáveis $a e $b são globais pré-declaradas em Perl, portanto, embora a expressão inteira deva ser considerada dentro de um loop (e com escopo definido), elas manterão seus valores durante toda a execução. A própria substituição insere o valor atual de $a como parte do nome do arquivo, permitindo que o argumento também seja um nome de caminho. (Nós dividimos o argumento em dirname e basename , resultando em componentes $ 1 e $ 2.)
O no warnings pragma interrompe a substituição reclamando do componente de nome de caminho ausente. Isso normalmente não seria necessário, mas acho que o comando rename tem avisos extras habilitados.
Adicione -n para execução a seco ou -v para ação com confirmação.
Como alternativa, você pode usar um snippet de perl para obter os parâmetros que você tem e aplicá-los a um conjunto de arquivos. Mas quando você fizer isso, você pode também analisar o YAML em Perl também.