请问:rename如何规律性批量重命名?
- pityonline
- 帖子: 3864
- 注册时间: 2008-12-09 12:44
- 来自: 北京
- 联系:
请问:rename如何规律性批量重命名?
现某一目录下有许多图片,诸如:
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,让后面的数字递增,这样就不会再看到一大堆乱七八糟的字母和数字了……
再就是,文件名更不规律,有的含有同样的单词,有的则不含,请问大家这个是否也可实现规律性批量重命名呢?
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,让后面的数字递增,这样就不会再看到一大堆乱七八糟的字母和数字了……
再就是,文件名更不规律,有的含有同样的单词,有的则不含,请问大家这个是否也可实现规律性批量重命名呢?
-
- 帖子: 183
- 注册时间: 2008-02-12 22:29
- bigsun
- 帖子: 301
- 注册时间: 2009-01-11 16:05
Re: 请问:rename如何规律性批量重命名?
用这个简单些:
如果要重命名的文件有空格,修改下:
对空格文件,还有其它方法,参照
http://www.cyberciti.biz/tips/handling- ... -bash.html
代码: 全选
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
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 请问:rename如何规律性批量重命名?
加上引号就不怕空格了。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
- pityonline
- 帖子: 3864
- 注册时间: 2008-12-09 12:44
- 来自: 北京
- 联系:
Re: 请问:rename如何规律性批量重命名?
感谢!曾在ee的回贴中看到这个软件,当时装了,还没仔细研究,原来这个可以实现!mlc880926 写了:
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把所有扩展名为.png的文件按顺序重命令为4位数字编号,文件数目必须不多于10000,否则用上面提到的 printf 命令。代码: 全选
i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
代码: 全选
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
代码: 全选
i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
在当前目录下有带空格的和不带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png和一个未改名的带空格的png文件。这个命令不是很理解,大致是找到以.png结尾的文件,然后把它们改名为${i#1}.png,在前面i定义为10000,改名规则是让所有文件从10000递减吗?请指教。
将以上三条命令都写成.sh文件后执行同直接执行命令结果一致!
再次感谢大家!
- pityonline
- 帖子: 3864
- 注册时间: 2008-12-09 12:44
- 来自: 北京
- 联系:
Re: 请问:rename如何规律性批量重命名?
还是要请教一下,我想把所有文件名都改为screenshot-(日期+时间).png,不含括号,这样应该怎么写?已经找到了比较中意的时间格式:
请问如何把它替换掉screenshot-后面的部分?试过多次都不成功,还望指点。谢谢!
我明白为什么不成功了,昨晚测试时没想明白干嘛都要把所有图片重命名为一个当前时间为名字的图片,怪不得好几个图片最后只变成一个。
我真正的目的是在屏幕截图后让它按截图的时间来命名截图的名字,这样名字都不一样,但好像gnome-screenshot不自带以截图时间命名的功能,看来还是要靠命令组合实现了……
代码: 全选
date +\%F-%H%M
2009-11-26-0019
我明白为什么不成功了,昨晚测试时没想明白干嘛都要把所有图片重命名为一个当前时间为名字的图片,怪不得好几个图片最后只变成一个。
我真正的目的是在屏幕截图后让它按截图的时间来命名截图的名字,这样名字都不一样,但好像gnome-screenshot不自带以截图时间命名的功能,看来还是要靠命令组合实现了……
上次由 pityonline 在 2009-11-26 10:02,总共编辑 2 次。
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 请问:rename如何规律性批量重命名?
前面代码忘了给 i 递增了,修改一下:pityonline 写了:在当前目录下没有带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png。代码: 全选
i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
在当前目录下有带空格的和不带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png和一个未改名的带空格的png文件。这个命令不是很理解,大致是找到以.png结尾的文件,然后把它们改名为${i#1}.png,在前面i定义为10000,改名规则是让所有文件从10000递减吗?请指教。
代码: 全选
i=10000; for f in *.png; do mv "$f" ${i#1}.png; ((i++)); done
定义i为10000,是为了让它带前导的零,如果从0开始,bash不能自动补上前导的0(换成ksh可以),从10000开始,再用${i#1}去掉前面的1,就解决这一问题,免去了用printf的麻烦。
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- pityonline
- 帖子: 3864
- 注册时间: 2008-12-09 12:44
- 来自: 北京
- 联系:
Re: 请问:rename如何规律性批量重命名?
感谢回复!这次测试了一下新的命令,成功!aerofox 写了:前面代码忘了给 i 递增了,修改一下:pityonline 写了:在当前目录下没有带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png。代码: 全选
i=10000; for f in *.png; do mv "$f" ${i#1}.png; done
在当前目录下有带空格的和不带空格的文件名的情况下:将当前目录下所有的png文件都删除了,只留下了一个0000.png和一个未改名的带空格的png文件。这个命令不是很理解,大致是找到以.png结尾的文件,然后把它们改名为${i#1}.png,在前面i定义为10000,改名规则是让所有文件从10000递减吗?请指教。要确保"$f"那对引号,应该是可以处理带空格的文件的,这回我测试过了。适用于bash,其它shell没试过。代码: 全选
i=10000; for f in *.png; do mv "$f" ${i#1}.png; ((i++)); done
定义i为10000,是为了让它带前导的零,如果从0开始,bash不能自动补上前导的0(换成ksh可以),从10000开始,再用${i#1}去掉前面的1,就解决这一问题,免去了用printf的麻烦。
- pityonline
- 帖子: 3864
- 注册时间: 2008-12-09 12:44
- 来自: 北京
- 联系:
Re: 请问:rename如何规律性批量重命名?
请问对6楼的问题大家有解决方案吗?就是让截图自动以当时的日期和时间命名?
- yechao1989
- 帖子: 576
- 注册时间: 2009-07-19 21:03
- pityonline
- 帖子: 3864
- 注册时间: 2008-12-09 12:44
- 来自: 北京
- 联系:
Re: 请问:rename如何规律性批量重命名?
兴奋系列的很多呀……
- yechao1989
- 帖子: 576
- 注册时间: 2009-07-19 21:03
-
- 帖子: 150
- 注册时间: 2011-03-19 23:18
Re: 请问:rename如何规律性批量重命名?
不好,,有没有直接鼠标操作的。。要不真麻烦。。。
- 我就是我2
- 帖子: 1215
- 注册时间: 2008-12-13 10:55
- 来自: the Earth
- 联系:
Re: 请问:rename如何规律性批量重命名?
scrot
苏东坡问佛印道:“人人皆念观世音菩萨,观世音菩萨念谁?”
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!
佛印答道:“念观世音菩萨。”
苏东坡诧异:“为何亦念观世音菩萨?”
曰:“求人不如求己。”
自然灋則
dropbox 誰好奇,誰來點
勞碌一生又如何,虛度一生又如何,你過得開心嗎?人活著就要開心嘛!