免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2718 | 回复: 4
打印 上一主题 下一主题

批量重命名命令rename可否实现这样的功能? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-28 14:54 |只看该作者 |倒序浏览
本帖最后由 BombLee 于 2011-03-02 08:46 编辑

例如有一堆文件,我想将它们全部改名为:
name001,name002,name003,……,name033,……
主要是后面的数字它能自动计算,而且是从001开始而不是从1开始。

请问:
1)rename这个命令能做到吗?能做到的话请大侠们给个例子。
2)如果rename命令不能做到,请教如何用shell脚本做?最好能给出详细的脚本。
主要是后面的数字如何实现,谢谢!

补充上传一个Windows下的批量重命名工具,非常强大!
不得不感叹一下,Windows虽然从技术上讲很烂,但围绕它开发的应用确实非常之多。
而Linux很多时候都得自己亲力亲为,经常找不到现成的工具!

Bulk Rename Utility.zip (449.18 KB, 下载次数: 38)

招聘 : 技术支持/维
论坛徽章:
0
2 [报告]
发表于 2011-02-28 18:52 |只看该作者
可以的,for 循环就可以
let i = i + 1

论坛徽章:
0
3 [报告]
发表于 2011-02-28 23:38 |只看该作者
我也不知道怎么用 rename 来实现你要求的批量重命名,期待楼下的高手解答吧! {:3_199:}

如果脚本来实现此批量重命令还是可以的! {:3_200:}
  1. #!/bin/bash

  2. # Example-1:
  3. # cp-rename.sh
  4. # pic2058c1.jpg renamed as 0.jpg
  5. # pic2069c1.jpg renamed as 1.jpg
  6. # pic2145c1.jpg renamed as 2.jpg
  7. # ... ... ... ... ... ...

  8. # Example-2:
  9. # cp-rename.sh 000
  10. # pic2058c1.jpg renamed as 000.jpg
  11. # pic2069c1.jpg renamed as 001.jpg
  12. # pic2145c1.jpg renamed as 002.jpg
  13. # ... ... ... ... ... ...

  14. # Example-3:
  15. # cp-rename.sh name0000
  16. # pic2058c1.jpg renamed as name0000.jpg
  17. # pic2069c1.jpg renamed as name0001.jpg
  18. # pic2145c1.jpg renamed as name0002.jpg
  19. # ... ... ... ... ... ...

  20. # Example-4:
  21. # cp-rename.sh name0000 101
  22. # pic2058c1.jpg renamed as name0101.jpg
  23. # pic2069c1.jpg renamed as name0102.jpg
  24. # pic2145c1.jpg renamed as name0103.jpg
  25. # ... ... ... ... ... ...

  26. [ "-y" == "${1}" -o "-y" == "${2}" -o "-y" == "${3}" ] && NO_YES_='-y' || NO_YES_=''
  27. [ "-y" == "${1}" ] && VAL_1_='' || VAL_1_="${1}"
  28. [ "-y" == "${2}" ] && VAL_2_='' || VAL_2_="${2}"
  29. [ "-y" == "${3}" ] && VAL_3_='' || VAL_3_="${3}"

  30. NAME_=$(/bin/echo "${VAL_1_}" | /bin/sed 's/0*$//g')
  31. NUMBER_=$(/bin/echo "${VAL_1_}" | /bin/sed "s/^${NAME_}//g")
  32. SIZE_=$(/bin/echo ${NUMBER_} | /usr/bin/wc -m)
  33. NUM_="${VAL_2_}"
  34. (( SIZE_-- ))
  35. NAMES_=$(/bin/ls -1 | /usr/bin/awk '{printf $0 " "}')
  36. for TMP_ in ${NAMES_}
  37. do
  38.         NUMBER_=$(/usr/bin/printf %0${SIZE_}d ${NUM_})
  39.         if [ "${NO_YES_}" ]
  40.         then
  41.                 /usr/bin/rename "s/^.*\./${NAME_}${NUMBER_}\./g" ${TMP_}
  42.         else
  43.                 /usr/bin/rename -n "s/^.*\./${NAME_}${NUMBER_}\./g" ${TMP_}
  44.         fi
  45.         (( NUM_++ ))
  46. done
复制代码
如图:









使用说明:cp-rename.sh [name0000] [start_number] [-y]
cp-rename.sh:只是脚本名,自己想怎么取都行,我自己写的脚本基本上都是'cp-'开头的,自己习惯而已,哈!
name0000:是命名方式是(字符串+数字),其中name就是指是字符串,后面的0000是指数字,注意:在name与0000之间没有空格的哟!!!
start_number:这是关于数字的,从什么数字开始,没有则是以0开始,可以指定从100开始也行
-y:这个只是个开关而已,没加这个参数,只是显示在屏幕上,加上这个参数就是重命名文件了!!!

自己看图了解吧,就这些功能,若不满意,自己去修改脚本!

{:3_186:}

评分

参与人数 1可用积分 +6 收起 理由
chenyx + 6

查看全部评分

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
4 [报告]
发表于 2011-03-01 07:47 |只看该作者
楼上的脚本不错,赞一个

论坛徽章:
0
5 [报告]
发表于 2011-03-01 08:38 |只看该作者
回复 3# 383228273


    谢谢!
脚本太赞了。CU上高手就上多!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP