截断文件名

截断文件名

我有一个文件夹,其中包含许多格式相似的文件:

Dropkick Murphys - 01 - Walk Away.mp3
Dropkick Murphys - 02 - Workers Song.mp3

等等...

我想将它们全部转换,以便它们显示为:

01 - Walk Away.mp3
02 - Workers Song.mp3

我怎样才能做到这一点?

答案1

在 Ubuntu 或 Debian 下,很简单:

rename 's/Dropkick Murphys - //' *mp3

答案2

选一个。

for i in *.mp3; do mv "$i" "${i#* - }"; done
for i in *.mp3; do mv "$i" "${i:19}"; done

答案3

您可以使用for循环来循环遍历要修改的文件。${var/from/to}会将第一次出现的 替换fromtoin $var,因此${var/Dropkick Murphys - /}会将“Dropkick Murphys - ”替换为空:

for i in "Dropkick Murphys - "*; do
    mv "$i" "${i/Dropkick Murphys - /}"    
done  

答案4

zsh 强制回答:

autoload zmv
zmv 'Dropkick Murphys - (*.mp3)' '$1'

变体,对所有艺术家姓名进行重命名。请注意,第一个命令采用第一个命令的最长匹配项*,例如它将重命名Dropkick Murphys - 01 - Walk Away - concert.mp3Walk Away - concert.mp3

zmv '* - (* - *.mp3)' '$1'
zmv '*.mp3' '${f#* - }'

相关内容