免费注册 查看新帖 |

Chinaunix

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

求一个相同后缀的文件批量改名的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-09 19:43 |只看该作者 |倒序浏览
假如我的文件架下有4000个文件,每个文件的明知都是以后缀.rrd.xml.rrd结尾的,我现在要把这些文件的名字统一改成.rrd为后缀的文件,
请高手赐教脚本。
PS:注意,普通的MV命令可能会出现-bash: /bin/mv: Argument list too long 这个问题
所以希望脚本来批量更改。求高人解答。

论坛徽章:
5
寅虎
日期:2015-01-20 09:16:52亥猪
日期:2015-01-21 14:43:44IT运维版块每日发帖之星
日期:2015-12-17 06:20:00每日论坛发贴之星
日期:2015-12-17 06:20:00每周论坛发贴之星
日期:2015-12-20 22:22:00
2 [报告]
发表于 2009-09-09 19:47 |只看该作者
rename

论坛徽章:
0
3 [报告]
发表于 2009-09-09 20:05 |只看该作者

回复 #2 gamester88 的帖子

不好使。rename批量的时候 就报错,Argument list too long

论坛徽章:
0
4 [报告]
发表于 2009-09-09 20:06 |只看该作者

回复 #2 gamester88 的帖子

形如:
[root@BFG-OSER-124 rra]# rename .rrd.xml.rrd .rrd *
bash: /usr/bin/rename: Argument list too long

论坛徽章:
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
5 [报告]
发表于 2009-09-09 20:41 |只看该作者
用shell的for循环解决

论坛徽章:
5
寅虎
日期:2015-01-20 09:16:52亥猪
日期:2015-01-21 14:43:44IT运维版块每日发帖之星
日期:2015-12-17 06:20:00每日论坛发贴之星
日期:2015-12-17 06:20:00每周论坛发贴之星
日期:2015-12-20 22:22:00
6 [报告]
发表于 2009-09-10 14:20 |只看该作者

回复 #4 simeng0912 的帖子

[root@webserver ~]# ls
good.rrd.xml.rrd  nihaogood.rrd.xml.rrd  sdfsdfgood.rrd.xml.rrd  testgood.rrd.xml.rrd
[root@webserver ~]# rename .rrd.xml.rrd .rrd *
[root@webserver ~]# ls
good.rrd  nihaogood.rrd  sdfsdfgood.rrd  testgood.rrd

论坛徽章:
0
7 [报告]
发表于 2009-09-10 14:24 |只看该作者
find+exec

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
8 [报告]
发表于 2009-09-10 16:02 |只看该作者
原帖由 simeng0912 于 2009-9-9 20:06 发表
形如:
[root@BFG-OSER-124 rra]# rename .rrd.xml.rrd .rrd *
bash: /usr/bin/rename: Argument list too long
  1. ls *.rrd.xml.rrd | xargs rename .rrd.xml.rrd .rrd
复制代码

论坛徽章:
1
寅虎
日期:2015-01-23 02:35:47
9 [报告]
发表于 2009-09-10 16:05 |只看该作者
for i in *.txt;do mv $i ${i%.txt}.eml;done

试试这种格式

[ 本帖最后由 cuci 于 2009-9-10 16:11 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-09-10 18:39 |只看该作者
我的想法是:
#!/bin/sh
SUFFIX=rrd
for file  in $(find . -name "*.rrd.xml.rrd" -type f )
do
       filename=$(file%.*rrd.xml.rrd)
       mv $file   $filename.$SUFFIX
done
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP