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