正しい名前の.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