请问:rename如何规律性批量重命名?

sh/bash/dash/ksh/zsh等Shell脚本
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

请问:rename如何规律性批量重命名?

#1

帖子 pityonline » 2009-11-25 0:28

现某一目录下有许多图片,诸如:
screenshot-rlkd.png
screenshot-lkjg.png
Screenshot-opijged93.png
Screenshot.png
Screenshot-3.png
screenshot-653.png
gdasf-screenshot.png
g3wonldf-screenshot.png
……
其中文件名中都含有screenshot或Screenshot这几个字母,请问如何批量将所有图片重命名为screenshot-000.png到screenshot-999.png,让后面的数字递增,这样就不会再看到一大堆乱七八糟的字母和数字了……

再就是,文件名更不规律,有的含有同样的单词,有的则不含,请问大家这个是否也可实现规律性批量重命名呢?
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
mlc880926
帖子: 183
注册时间: 2008-02-12 22:29

Re: 请问:rename如何规律性批量重命名?

#2

帖子 mlc880926 » 2009-11-25 5:23

:em01
附件
Screenshot.png
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05

Re: 请问:rename如何规律性批量重命名?

#3

帖子 bigsun » 2009-11-25 8:31

用这个简单些:

代码: 全选

 i=0; for img in `ls *.png`; do mv $img test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
如果要重命名的文件有空格,修改下:

代码: 全选

find ./ -name '*.png' | while read FILE; do   mv "$FILE" test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
对空格文件,还有其它方法,参照
http://www.cyberciti.biz/tips/handling- ... -bash.html
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请问:rename如何规律性批量重命名?

#4

帖子 aerofox » 2009-11-25 12:29

bigsun 写了:用这个简单些:

代码: 全选

 i=0; for img in `ls *.png`; do mv $img test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
如果要重命名的文件有空格,修改下:

代码: 全选

find ./ -name '*.png' | while read FILE; do   mv "$FILE" test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
对空格文件,还有其它方法,参照
http://www.cyberciti.biz/tips/handling- ... -bash.html
加上引号就不怕空格了。

代码: 全选

i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
把所有扩展名为.png的文件按顺序重命令为4位数字编号,文件数目必须不多于10000,否则用上面提到的 printf 命令。
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: 请问:rename如何规律性批量重命名?

#5

帖子 pityonline » 2009-11-25 23:02

mlc880926 写了::em01
感谢!曾在ee的回贴中看到这个软件,当时装了,还没仔细研究,原来这个可以实现!
aerofox 写了:
bigsun 写了:用这个简单些:

代码: 全选

 i=0; for img in `ls *.png`; do mv $img test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
如果要重命名的文件有空格,修改下:

代码: 全选

find ./ -name '*.png' | while read FILE; do   mv "$FILE" test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
对空格文件,还有其它方法,参照
http://www.cyberciti.biz/tips/handling- ... -bash.html
加上引号就不怕空格了。

代码: 全选

i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
把所有扩展名为.png的文件按顺序重命令为4位数字编号,文件数目必须不多于10000,否则用上面提到的 printf 命令。

代码: 全选

 i=0; for img in `ls *.png`; do mv $img test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
的确可以实现!我的理解是:把到以.png结尾的所有文件,改名为test-(6位数字0).png,用expr $1+1来定义文件命名规则,不知道是不是这样的?

代码: 全选

find ./ -name '*.png' | while read FILE; do   mv "$FILE" test-`printf  %.6d $i`.png; i=`expr $i + 1`; done
同样可以实现!我的理解是:先用find找出以.png结尾的所有文件,然后用read读取find的查找结果,再按照上面命令的规则重命名,不知道是不是这样的?

代码: 全选

i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
在当前目录下没有带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png。
在当前目录下有带空格的和不带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png和一个未改名的带空格的png文件。这个命令不是很理解,大致是找到以.png结尾的文件,然后把它们改名为${i#1}.png,在前面i定义为10000,改名规则是让所有文件从10000递减吗?请指教。

将以上三条命令都写成.sh文件后执行同直接执行命令结果一致!

再次感谢大家!
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: 请问:rename如何规律性批量重命名?

#6

帖子 pityonline » 2009-11-26 0:32

还是要请教一下,我想把所有文件名都改为screenshot-(日期+时间).png,不含括号,这样应该怎么写?已经找到了比较中意的时间格式:

代码: 全选

date +\%F-%H%M
2009-11-26-0019
请问如何把它替换掉screenshot-后面的部分?试过多次都不成功,还望指点。谢谢!



我明白为什么不成功了,昨晚测试时没想明白干嘛都要把所有图片重命名为一个当前时间为名字的图片,怪不得好几个图片最后只变成一个。

我真正的目的是在屏幕截图后让它按截图的时间来命名截图的名字,这样名字都不一样,但好像gnome-screenshot不自带以截图时间命名的功能,看来还是要靠命令组合实现了……
上次由 pityonline 在 2009-11-26 10:02,总共编辑 2 次。
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请问:rename如何规律性批量重命名?

#7

帖子 aerofox » 2009-11-26 6:57

pityonline 写了:

代码: 全选

i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
在当前目录下没有带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png。
在当前目录下有带空格的和不带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png和一个未改名的带空格的png文件。这个命令不是很理解,大致是找到以.png结尾的文件,然后把它们改名为${i#1}.png,在前面i定义为10000,改名规则是让所有文件从10000递减吗?请指教。
前面代码忘了给 i 递增了,修改一下:

代码: 全选

i=10000; for f in *.png; do mv "$f" ${i#1}.png; ((i++)); done
要确保"$f"那对引号,应该是可以处理带空格的文件的,这回我测试过了。适用于bash,其它shell没试过。
定义i为10000,是为了让它带前导的零,如果从0开始,bash不能自动补上前导的0(换成ksh可以),从10000开始,再用${i#1}去掉前面的1,就解决这一问题,免去了用printf的麻烦。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请问:rename如何规律性批量重命名?

#8

帖子 eexpress » 2009-11-26 9:35

其实就是玩peregex
● 鸣学
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: 请问:rename如何规律性批量重命名?

#9

帖子 pityonline » 2009-11-26 9:47

aerofox 写了:
pityonline 写了:

代码: 全选

i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
在当前目录下没有带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png。
在当前目录下有带空格的和不带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png和一个未改名的带空格的png文件。这个命令不是很理解,大致是找到以.png结尾的文件,然后把它们改名为${i#1}.png,在前面i定义为10000,改名规则是让所有文件从10000递减吗?请指教。
前面代码忘了给 i 递增了,修改一下:

代码: 全选

i=10000; for f in *.png; do mv "$f" ${i#1}.png; ((i++)); done
要确保"$f"那对引号,应该是可以处理带空格的文件的,这回我测试过了。适用于bash,其它shell没试过。
定义i为10000,是为了让它带前导的零,如果从0开始,bash不能自动补上前导的0(换成ksh可以),从10000开始,再用${i#1}去掉前面的1,就解决这一问题,免去了用printf的麻烦。
感谢回复!这次测试了一下新的命令,成功!
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: 请问:rename如何规律性批量重命名?

#10

帖子 pityonline » 2009-12-01 20:21

请问对6楼的问题大家有解决方案吗?就是让截图自动以当时的日期和时间命名?
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
yechao1989
帖子: 576
注册时间: 2009-07-19 21:03

Re: 请问:rename如何规律性批量重命名?

#11

帖子 yechao1989 » 2009-12-01 20:25

我用Gnome-commander倒是蛮好用的!
附件
1_001.png
Man->Wiki->Google->Froum->Get it :-)
头像
pityonline
帖子: 3864
注册时间: 2008-12-09 12:44
来自: 北京
联系:

Re: 请问:rename如何规律性批量重命名?

#12

帖子 pityonline » 2009-12-01 20:32

兴奋系列的很多呀……
Pity is the bomp!
活着就是折腾!生命不息,折腾不止!
看这帮家伙在干什么?@pityonline/u
Dropbox+Vps+PC 跑起来了!这是邀请链接
头像
yechao1989
帖子: 576
注册时间: 2009-07-19 21:03

Re: 请问:rename如何规律性批量重命名?

#13

帖子 yechao1989 » 2009-12-01 21:20

pityonline 写了:兴奋系列的很多呀……
嘿嘿,被发现了 :em04
Man->Wiki->Google->Froum->Get it :-)
ybdx2000
帖子: 150
注册时间: 2011-03-19 23:18

Re: 请问:rename如何规律性批量重命名?

#14

帖子 ybdx2000 » 2011-08-14 22:33

不好,,有没有直接鼠标操作的。。要不真麻烦。。。
头像
我就是我2
帖子: 1215
注册时间: 2008-12-13 10:55
来自: the Earth
联系:

Re: 请问:rename如何规律性批量重命名?

#15

帖子 我就是我2 » 2011-08-15 0:05

scrot
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”


dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
回复