![목록을 기반으로 파일 이름 바꾸기](https://linux55.com/image/11705/%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
저는 이러한 비디오 파일을 가지고 있습니다.
Fringe.S03E01.mkv
Fringe.S03E02.mkv
Fringe.S03E03.mkv
etc...
에피소드 제목이 포함된 .csv 텍스트 파일도 있습니다.
01,Olivia
02,The Box
03,The Plateau
etc...
내가 달성하고 싶은 것은;
Fringe.S03E01.Olivia.mkv
Fringe.S03E02.The Box.mkv
Fringe.S03E03.The Plateau.mkv
etc...
foreach를 사용하여 bash 스크립트의 구문을 알아내려고 노력했지만 사용 가능한 결과를 얻지 못했습니다.
답변1
fringe_copy(){
local IFS=,
while read num title; do
f=Fringe.S03E$num.mkv
if [ -f "$f" ]; then
echo mv "$f" "${f%.mkv}.$title.mkv"
fi
done
}
fringe_copy <list_of_files
체험판 실행에 만족하셨다면 echo
이전 콘텐츠를 삭제하셔야 합니다.mv
답변2
이 awk
제안 도 시도해 보세요.
ls Fringe* |
awk '
NR == FNR {EP[$1]=$2
next
}
{IX=substr($2, length($2)-1, 2)
$2 = $2 OFS EP[IX]
}
1
' FS=, episodes.csv FS=. OFS=. -
Fringe.S03E01.Olivia.mkv
Fringe.S03E02.The Box.mkv
Fringe.S03E03.The Plateau.mkv
에피소드 제목 파일을 대체 배열로 읽은 후 결과에 따라 ls
$2의 마지막 두 문자에 있는 숫자를 기준으로 적절한 제목을 삽입합니다.