求助一个批量重命名的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
chinaz
帖子: 238
注册时间: 2007-02-07 9:23

求助一个批量重命名的问题

#1

帖子 chinaz » 2022-05-17 15:40

班主任提供一份学生名单a
学生根据a名单排队站好,依次拍照。
照片从相机里面倒出来是根据相机里面的命名规则按顺序排列的(如:IMG_1314.JPG、IMG_1315.JPG......)。
要求将照片重命名为学生本人的名字,如张三.JPG、李四.JPG.......
怎样使用shell指令将a文件里面的名字按顺序赋给相片文件?
请高手给支个招,谢谢!
宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。
头像
lilydjwg
论坛版主
帖子: 4250
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 求助一个批量重命名的问题

#2

帖子 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 执行它。
xingyao
帖子: 1
注册时间: 2012-05-04 13:27

Re: 求助一个批量重命名的问题

#3

帖子 xingyao » 2022-05-17 16:16

可以用WPS实现批量改文件名,教程如下:https://blog.csdn.net/weixin_29190573/a ... /112315273
头像
chinaz
帖子: 238
注册时间: 2007-02-07 9:23

Re: 求助一个批量重命名的问题

#4

帖子 chinaz » 2022-05-17 16:17

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'

这里提示错误,麻烦看看应该怎么做?
宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。
头像
lilydjwg
论坛版主
帖子: 4250
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 求助一个批量重命名的问题

#5

帖子 lilydjwg » 2022-05-17 16:30

啊,bash 的 for 不支持多个变量。那你用 zsh 跑吧……
头像
lilydjwg
论坛版主
帖子: 4250
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 求助一个批量重命名的问题

#6

帖子 lilydjwg » 2022-05-17 16:31

其实我想说用 Vim 来着,但是楼主可能也不会用 Vim。
头像
chinaz
帖子: 238
注册时间: 2007-02-07 9:23

Re: 求助一个批量重命名的问题

#7

帖子 chinaz » 2022-05-17 16:44

安装zsh后再执行,就搞定了,很简单,谢谢帮忙!
不过还是出错,需要稍微改一下才正常:

ls *.JPG > b
for name file in $(paste a b); do
mv $file $name.JPG
done

另WPS那个方案太过复杂,不过还是谢谢了~
宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。
sxgpic
帖子: 98
注册时间: 2013-12-13 6:57

Re: 求助一个批量重命名的问题

#8

帖子 sxgpic » 2022-05-24 23:55

ls 加上 -v 参数,才会按照自然数顺序排列。不加会这样排的哦: 1 10 11 ... 2 20 21 ...
头像
chinaz
帖子: 238
注册时间: 2007-02-07 9:23

Re: 求助一个批量重命名的问题

#9

帖子 chinaz » 2022-05-25 13:47

sxgpic 写了: 2022-05-24 23:55 ls 加上 -v 参数,才会按照自然数顺序排列。不加会这样排的哦: 1 10 11 ... 2 20 21 ...
谢谢,明白了一个困扰很久的问题。。。
宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。
回复