根据相应名称列表重命名编号文件

根据相应名称列表重命名编号文件

我想使用具有正确名称的 .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

是的,将文本文件中的行读入数组,从每个文件名中提取数字并减一,以便您可以将其用作数组索引(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因此不需要从文件名数字中减一:

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

相关内容