Eu tenho esse diretório e quero renomear os arquivos:
===> ls -1 Der-vierte-Weise/
10 - 10 - Erkenntniss.ogg
1 - 01 - Hoffnung.ogg
11 - 11 - Wahrheit.ogg
12 - 12 - Dankbarkeit.ogg
13 - 13 - Kredits.ogg
2 - 02 - Familie.ogg
3 - 03 - Demut.ogg
4 - 04 - Freude.ogg
5 - 05 - Schoenheit.ogg
6 - 06 - Solidaritaet.ogg
7 - 07 - Entscheidung.ogg
8 - 08 - Hilfe.ogg
9 - 09 - Unterstuetzung.ogg
O resultado deve ficar assim:
===> ls -1 Der-vierte-Weise/
01 - Hoffnung.ogg
02 - Familie.ogg
...
Eu gostaria de resolver isso com ferramentas comuns de shell.
command-line
bash
batch-rename
guettli
fonte
fonte
Respostas:
Você poderia usar
rename
...Remova
-n
após o teste para renomear os arquivosExplicação
s/old/new/
substituaold
pornew
^
início da string[0-9]+
alguns númerosfonte
rename
ferramenta. Ele usa PCRE? ... seria ótimo.rename
é um script Perl, portanto, ele oferece suporte completo a expressões regulares do Perl; PCRE é apenas um subconjunto disso. No entanto, tudo o que você conhece do PCRE será aplicávelrename
.rename
expressões regulares compatíveis com perl. Sim, a implementação do pcre não é usada. Eu entendi isso :-) Obrigado por sua resposta rápida.bash
expansão de parâmetro para remover a parte necessária do início:Forma expandida:
echo
é para funcionamento a seco; se livrar dele para ação real:Exemplo:
fonte
rename
comando (Menos digitação necessária).rename
é o caminho a percorrer se você estiver familiarizado com o PCRE; arename
resposta já foi dada, então tem que se mover com purobash
. Apenas para observar,python
o módulore
(ouregex
) não é totalmente compatível com PCRE.${f#[[:digit:]]*-[[:blank:]]}
é feio. Sim, funciona. Mas vivemos no século XXI. Eu acho que é hora de mudar de "funciona" para "é fácil e divertido". Se "funciona" for o objetivo, o Linux nunca perderá o preconceito de não ser amigável. Como você já recebeu muitos votos positivos, esse voto negativo não deve prejudicar (espero). Se isso acontecer, diga-me, e eu vou devolvê-lo.[[:digit:]]
e[[:blank:]]
a sua conformidade com a sualocale
, também são bastante comuns no Regex.