シリーズエピソード名を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

1つの方法はコマンドを使用することですrename。提案された名前の変更に満足したら削除してください-n

説明する:

  • s/=交換
  • (\d+)= 1つ以上の数字と一致(シーズン)
  • x= "x"文字と一致
  • (\d+)= 1つ以上の数字と一致(エピソード)
  • / = 文字列の終わりを検索して文字列の先頭を置き換えます。
  • S0=テキスト「S0」を挿入
  • $1=前(シーズン)で最初に一致する数字を挿入します。
  • E= "E"文字を挿入します。
  • $2=前(エピソード)から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

関連情報