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.