해당 이름 목록에 따라 번호가 매겨진 파일의 이름을 바꿉니다.

해당 이름 목록에 따라 번호가 매겨진 파일의 이름을 바꿉니다.

올바른 이름의 .txt 파일을 사용하여 파일 이름을 바꾸고 싶습니다. 다음은 내 파일입니다.

lesson1.mp4
lesson2.mp4
lesson3.mp4
...

이것은 내 txt 파일 이름입니다.

1 Entry to vim
2 Basics of vim
3 Vim motion
...

내가 원하는 결과는 다음과 같습니다.

1 Entry to vim.mp4
2 Basics of vim.mp4
3 Vim motion.mp4

답변1

예, 텍스트 파일의 행을 배열로 읽고, 각 파일 이름에서 숫자를 추출한 후 1을 빼서 배열 인덱스( bash시작 위치 0)로 사용하여 배열에서 해당 요소를 선택할 수 있습니다.

readarray -t dest < names_list.txt
for f in lesson*.mp4; do i=${f:6:-4}; mv -- "$f" "${dest[i-1]}.mp4"; done

zsh인덱스가 처음부터 시작한다는 점을 제외하면 와 유사하므로 1파일 이름 번호에서 1을 뺄 필요가 없습니다.

zmodload zsh/mapfile
dest=( ${(f@)mapfile[names_list.txt]} )
for f in lesson*.mp4; do i=${f:6:-4}; mv -- "$f" "${dest[i]}.mp4"; done

관련 정보