分页: 1 / 1
求助一个批量重命名的问题
发表于 : 2022-05-17 15:40
由 chinaz
班主任提供一份学生名单a
学生根据a名单排队站好,依次拍照。
照片从相机里面倒出来是根据相机里面的命名规则按顺序排列的(如:IMG_1314.JPG、IMG_1315.JPG......)。
要求将照片重命名为学生本人的名字,如张三.JPG、李四.JPG.......
怎样使用shell指令将a文件里面的名字按顺序赋给相片文件?
请高手给支个招,谢谢!
Re: 求助一个批量重命名的问题
发表于 : 2022-05-17 15:54
由 lilydjwg
假定文件名里不含空格等特殊字符。
代码: 全选
ls *.JPG > b # 因为是相机导出的照片,这里顺序应该不会有问题
for name file in $(paste a b); do
echo mv $file $name.jpg
done > cmds.sh
以上生成一个叫 cmds.sh 的脚本文件。检查没有问题之后,用 bash cmds.sh 执行它。
Re: 求助一个批量重命名的问题
发表于 : 2022-05-17 16:16
由 xingyao
Re: 求助一个批量重命名的问题
发表于 : 2022-05-17 16:17
由 chinaz
lilydjwg 写了: ↑2022-05-17 15:54
假定文件名里不含空格等特殊字符。
代码: 全选
ls *.JPG > b # 因为是相机导出的照片,这里顺序应该不会有问题
for name file in $(paste a b); do
echo mv $file $name.jpg
done > cmds.sh
以上生成一个叫 cmds.sh 的脚本文件。检查没有问题之后,用 bash cmds.sh 执行它。
感谢帮忙,脚本运行提示错误:
./rename:行2: 未预期的符号“file”附近有语法错误
./rename:行2: `for name file in $(paste a b); do'
这里提示错误,麻烦看看应该怎么做?
Re: 求助一个批量重命名的问题
发表于 : 2022-05-17 16:30
由 lilydjwg
啊,bash 的 for 不支持多个变量。那你用 zsh 跑吧……
Re: 求助一个批量重命名的问题
发表于 : 2022-05-17 16:31
由 lilydjwg
其实我想说用 Vim 来着,但是楼主可能也不会用 Vim。
Re: 求助一个批量重命名的问题
发表于 : 2022-05-17 16:44
由 chinaz
安装zsh后再执行,就搞定了,很简单,谢谢帮忙!
不过还是出错,需要稍微改一下才正常:
ls *.JPG > b
for name file in $(paste a b); do
mv $file $name.JPG
done
另WPS那个方案太过复杂,不过还是谢谢了~
Re: 求助一个批量重命名的问题
发表于 : 2022-05-24 23:55
由 sxgpic
ls 加上 -v 参数,才会按照自然数顺序排列。不加会这样排的哦: 1 10 11 ... 2 20 21 ...
Re: 求助一个批量重命名的问题
发表于 : 2022-05-25 13:47
由 chinaz
sxgpic 写了: ↑2022-05-24 23:55
ls 加上 -v 参数,才会按照自然数顺序排列。不加会这样排的哦: 1 10 11 ... 2 20 21 ...
谢谢,明白了一个困扰很久的问题。。。