truncando nomes de arquivos

3

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?

    
por oadams 25.11.2010 / 07:06

6 respostas

6

No Ubuntu ou Debian, é simplesmente:

rename 's/Dropkick Murphys - //' *mp3
    
por 25.11.2010 / 10:51
4

Escolha um.

for i in *.mp3; do mv "$i" "${i#* - }"; done
for i in *.mp3; do mv "$i" "${i:19}"; done
    
por 25.11.2010 / 09:07
2

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  
    
por 25.11.2010 / 07:58
1

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#* - }'
    
por 26.11.2010 / 21:27
0

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-

    
por 25.11.2010 / 07:59
0

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...
    
por 26.11.2010 / 19:11