Estou procurando uma maneira elegante de CLI para nomes de arquivo de preenchimento zero que são sequências alfanuméricas numeradas de comprimento arbitrário e que possuem traços no lugar de espaços.
Por exemplo, gostaria da seguinte lista de arquivos:
1-file-name-of-one-length.mp3
2-shorter-file-name.mp3
3-really-really-really-long-file-name.mp3
> ..
10-another-file-name.mp3
Tornar-se:
01-file-name-of-one-length.mp3
02-shorter-file-name.mp3
03-really-really-really-long-file-name.mp3
> ..
10-another-file-name.mp3
Passei um dia aprendendo sobre abordagens de awk, bash e renomeação para preenchimento com zeros, mas as perguntas anteriores aqui e os tutoriais que encontrei parecem assumir um esquema de nomeação de arquivo puramente numérico ou de comprimento padronizado. Nesses casos, os campos entre os delimitadores '-' podem ser divididos e remontados de maneira previsível com, por exemplo, awk. Minhas strings são de comprimento desconhecido, então contém um número desconhecido de campos entre os caracteres '-'.
Estou prevendo que a resposta será um 'loop for'. A lógica do que eu quero que o loop faça é algo como: Leia o nome do arquivo até o primeiro caractere '-'. Determine se o número que precede o primeiro '-' é um número de um ou dois dígitos. Se for um número de um dígito, insira um caractere '0' na frente dele.
EDITAR PARA RESPOSTA
Renaud apontou a sintaxe correta para um loop for simples (minha própria tentativa ao longo dessas linhas também resultou no preenchimento de números de dois dígitos, mas o código de Renaud funcionou)
para f em [0-9]-*.mp3; faça mv "$f" "0$f"; feito