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