Estou tentando alterar arquivos parecidos com
01 Track name.mp3
em
01 - Track name.mp3
Até agora minhas tentativas inúteis foram
rename '0. ' '$&- ' *.mp3
rename 's/0. /$&- /' *.mp3
rename '/0. /' '/$&- /' *.mp3
rename 's/0.\ /$&-\ /' *.mp3
rename 's/0.\ /$1-\ /' *.mp3
Responder1
Assumindo o rename
comando perl:
Você está bem perto do último comando. rename 's/(0.) /$1 - /' *.mp3
podia funcionar. Não há necessidade de escapar do espaço, eles não têm nenhum significado especial em expressões regulares (têm em nomes de arquivos, mas isso não importa aqui) e você precisa de parênteses em torno da parte que deseja reutilizar.
Responder2
Tem que usar o rename
comando?
$ ls
01 Track name.mp3 02 Track name.mp3 03 Track name.mp3
$ for a in *.mp3
> do
> mv -i "$a" "${a%% *} - ${a#* }"
> done
$ ls
01 - Track name.mp3 02 - Track name.mp3 03 - Track name.mp3
Responder3
$ rename 's/^(\d\d)\s*/$1 - /' *.mp3
Isso renomeará todos os arquivos MP3 que possuem dois dígitos no início de seus nomes de arquivo, inserindo espaço-traço-espaço após os dígitos. Então 01 Track name.mp3
vai se tornar01 - Track name.mp3
A julgar pelas suas próprias tentativas, todos os nomes de arquivos começam com o dígito zero e parece que você deseja inserir um travessãodiretamenteapós os dígitos seguidos por um espaço:
$ rename 's/^(0\d)\s*/$1- /' *.mp3
Isso se transforma 01 Track name.mp3
em 01- Track name.mp3
.
Responder4
Existem dois (três) comandos de apagamento: um que faz parte doutilitário-linuxpacote que é instalado em todos os sistemas Linux não embarcados e um (duas variantes, na verdade) baseado em Perl. VerO que há com todas as renomeações: pré-nomear, renomear, renomear arquivo?
O comando util-linux é muito básico, mas você está na rara situação em que ele pode fazer o que quiser. Substitua o primeiro espaço por espaço-traço-espaço:
rename ' ' ' - ' [0-9][0-9]\ [^-]*