올바른 이름의 .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