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