免费注册 查看新帖 |

Chinaunix

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

文件的批量改名求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-28 10:13 |只看该作者 |倒序浏览
我有一系列文件, 如下:
00.asf
01.asf
...
56.asf
57.asf
...
63.asf
64.asf
65.asf
...
99.asf
共100个

我想要将文件名依次+1, 比如原来的00.asf 改为01.asf, 56.asf改为57.asf, 57.asf -> 58.asf, 依此类推。

我所想到的思路就是

#for f in `ls -r | head -100` ; do mv $f `echo $f | sed 's/.asf//g' +1 .asf; done

我就是不晓得+1那里是怎么实现的。

多谢指教。

论坛徽章:
0
2 [报告]
发表于 2003-03-28 10:57 |只看该作者

文件的批量改名求助


  1. for line in `cut -f1 -d . $1`
  2. do
  3.     num = `expr $line + 1`
  4.     if  [ $num -lt 9 ]
  5.     then
  6.         echo 0$num.asf >>filename
  7.     else
  8.          echo $num.asf >>filename
  9. fi
  10. done
复制代码

俺在tru64 unix下试了好使,不知道你是否好使!!

_________________________________________
phpBB : Critical Error

数据库忙,请刷新重试!

发送了n次了,才成功啊!!
把red sleeve 送俺吧!!![code][/code]

论坛徽章:
0
3 [报告]
发表于 2003-03-28 14:26 |只看该作者

文件的批量改名求助

我也有一个批量改名称的问题

比如文件夹sound下有a,b...,z子文件夹,在sound下有文件list
   
list中的内容是象这样的(假设):
a0001=a
a0002=about
........
b0001=bank
.........
b1230=
.....
z0001=zero
......
z0030=zzzz
其中等号左边的是对应的a,b...z文件夹下的子文件名称
而我想做的就是将这些名称批量该成等号右边的内容
请问shell如何实现(bash最好)

论坛徽章:
0
4 [报告]
发表于 2003-03-28 22:36 |只看该作者

文件的批量改名求助

use expr

论坛徽章:
0
5 [报告]
发表于 2003-03-28 22:46 |只看该作者

文件的批量改名求助

[quote]原帖由 "doni"]use expr[/quote 发表:


用expr的话,符号``岂不要嵌套?嵌套可以么?

论坛徽章:
0
6 [报告]
发表于 2003-03-28 22:52 |只看该作者

文件的批量改名求助

#for f1 `ls -r | head -100`
  do
    f2=`echo $f1| sed 's/.asf//g' `
    f3=`expr $2 + 1`
   mv f1 f3.asf
done

论坛徽章:
0
7 [报告]
发表于 2003-03-28 23:38 |只看该作者

文件的批量改名求助

原帖由 "doni" 发表:
#for f1 `ls -r | head -100`
  do
    f2=`echo $f1| sed 's/.asf//g' `
    f3=`expr $2 + 1`
   mv f1 f3.asf
done


谢谢。

我现在就是这样用的,我的意思是,如果要将整个脚本写成一行能不能行?就是``嵌套那里不晓得咋整。

论坛徽章:
0
8 [报告]
发表于 2003-03-29 04:52 |只看该作者

文件的批量改名求助

原帖由 "aquino" 发表:


谢谢。

我现在就是这样用的,我的意思是,如果要将整个脚本写成一行能不能行?就是``嵌套那里不晓得咋整。


不需要嵌套啊,这样写就可以了,或许我理解错你的意思了?

$ for f1 `ls -r | head -100`; do f2=`echo $f1| sed 's/.asf//g' `; f3=`expr $2 + 1` ; mv f1 f3.asf; done

论坛徽章:
0
9 [报告]
发表于 2003-03-29 04:54 |只看该作者

文件的批量改名求助

原帖由 "yinhm" 发表:
我也有一个批量改名称的问题

比如文件夹sound下有a,b...,z子文件夹,在sound下有文件list
   
list中的内容是象这样的(假设):
a0001=a
a0002=about
........
b0001=bank
.........
b1230=
.....
z0001..........


可以这样

  1. #!/bin/sh

  2. while read line; do
  3.    echo $line | awk -F'=' '{
  4.    dir=substr($1,1,1)
  5.    old=substr($1,2,4)
  6.    print "mv", dir "/" old, dir "/" $2
  7.    }' | sh
  8. done < list
复制代码


在 sound 目录下运行这个脚本

(solaris通过)

论坛徽章:
0
10 [报告]
发表于 2003-03-29 09:17 |只看该作者

文件的批量改名求助

红袖姐的这个写的挺好,不过好像有点问题;
我试的时候是这样的:
sound 下有a b c 三个目录,在a下有0001 0002;在b下有1230   1111
在c下有1235;在sound下的list的内容是:
a0001=n
a0002=m
b1230=g
b1111=
c1235=w

就是当我运行的时候,别的都没问题,只是当=号右边为空是,提示出错,要是把出错提示削掉就更好了;改好了,可以建议加精华啊!|sh用的太好了!

错误:mv:  b/1111 and b/1111 是identical;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP