시리즈 에피소드 이름을 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

관련 정보