No Ubuntu ou Debian, é simplesmente:
rename 's/Dropkick Murphys - //' *mp3
Eu tenho uma pasta com vários arquivos de forma semelhante a:
Dropkick Murphys - 01 - Walk Away.mp3
Dropkick Murphys - 02 - Workers Song.mp3
E assim por diante ...
Eu quero converter todos eles para que eles apareçam como:
01 - Walk Away.mp3
02 - Workers Song.mp3
Como posso fazer isso?
Escolha um.
for i in *.mp3; do mv "$i" "${i#* - }"; done
for i in *.mp3; do mv "$i" "${i:19}"; done
Você pode usar um loop for
para percorrer os arquivos que deseja modificar. ${var/from/to}
substituirá a primeira ocorrência de from
por to
em $var
, por isso ${var/Dropkick Murphys - /}
substituirá "Dropkick Murphys -" por nada:
for i in "Dropkick Murphys - "*; do
mv "$i" "${i/Dropkick Murphys - /}"
done
Resposta zig obrigatória:
autoload zmv
zmv 'Dropkick Murphys - (*.mp3)' '$1'
Variantes, para renomear todos os nomes de artistas. Observe que o primeiro comando leva a correspondência mais longa do primeiro *
, por exemplo, ele renomeará Dropkick Murphys - 01 - Walk Away - concert.mp3
para Walk Away - concert.mp3
.
zmv '* - (* - *.mp3)' '$1'
zmv '*.mp3' '${f#* - }'
for i in *.mp3; do mv "$i" "$(echo $i | sed 's/^Dropkick Murphys - //')"; done
ou, mais geral, para remover as primeiras 3 palavras delimitadas por espaço de um nome de arquivo
echo $i | cut -d' ' -f4-
Existe um comando rename.ul
(eu acho que por padrão no Ubuntu). Ele oferece uma maneira simples de renomear arquivos
Sintaxe:
$ rename from to file...
Tags command-line bash