将系列剧集从 1x01* 批量重命名为 S01E01* 模式

将系列剧集从 1x01* 批量重命名为 S01E01* 模式

Bash:如何将系列剧集批量重命名为1x01*模式S01E01*

我发现这个答案,但我对如何修改它以适应我的情况感到相当迷失。

答案1

Bash 子字符串可以:

for i in ?x??*
do
  mv "$i" "S0${i:0:1}E${i:2:2}${i:4}"
done

答案2

一种方法是使用rename命令。当对建议的重命名感到满意时,删除-n

解释:

  • s/=替代
  • (\d+)= 匹配 1 个或多个数字(季节)
  • x= 匹配“x”字符
  • (\d+)= 匹配 1 个或多个数字(剧集)
  • / = 搜索字符串的结尾,替换字符串的开头
  • S0= 插入文本“S0”
  • $1= 插入较早(季节)的第一个匹配数字
  • E= 插入“E”字符
  • $2= 插入之前(剧集)中的第二个匹配数字
  • /= 替换字符串结尾

-

rename -n -e 's/(\d+)x(\d+)/S0$1E$2/' *
rename(Breaking_Bad_1x01.mkv, Breaking_Bad_S01E01.mkv)
rename(Shameless_3x05.mp4, Shameless_S03E05.mp4)

答案3

你可以一一进行:

for f in 1x01*; do
    n=`echo $f | sed 's/^1x01/S01E01/'`
    mv $f $n
done

相关内容