当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一个批量改名脚本的问题!
帖子发表于 : 2007-08-16 10:24 
头像

注册: 2006-09-02 10:02
帖子: 159
送出感谢: 0 次
接收感谢: 0 次
我的一个朋友,他是在sun服务器工作的。不过显然是初学者!问我(另一个超级大菜鸟)怎么写一个重命名的脚本文件。
当前 改后
g101 g201
g102 g202
g103 g203
…… ……
g198 g298
g199 g299
就是把第二个字符改成2。
我尝试了几下,搞不定!特长请教高手!对了,他的系统似乎只有mv。所以……请高手指点!


最后由 uusky 编辑于 2007-08-16 11:30,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-08-16 11:25 
头像

注册: 2007-01-15 17:15
帖子: 3766
送出感谢: 0 次
接收感谢: 0 次
不知道solaris 有没有 rename :
rename 's/^g1/g2/' *


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-08-16 11:29 
头像

注册: 2006-09-02 10:02
帖子: 159
送出感谢: 0 次
接收感谢: 0 次
没有啊!兄弟!我让他看了。应该没有的。
他说他直接敲入rename说没有找到该条命令。我估计八成就没有。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-08-16 11:31 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
编译安装吧。perl的。
for i in *
do
j=`echo $i|sed /^g1/^g2/`
mv $i $j
done

乱写的。自己测试。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-08-16 12:28 
头像

注册: 2006-09-02 10:02
帖子: 159
送出感谢: 0 次
接收感谢: 0 次
我晕!把老子逼急了!

来一招狠的!不知道能不能行!
代码:
#include <stdio.h>

int main(int argc,char **argv)
{
    char src_name[10]  = "g100";
    char dest_name[10] = "g200";
    int  i;

    for (i=0; i<99; i++)
    {
        src_name[2] = i/10+'0';
        dest_name[2] = i/10+'0';

        src_name[3] = i%10+'0';
        dest_name[3] = i%10+'0';

        if (rename(src_name,dest_name) <0)
        {
            printf("%s not find!\n",src_name);
        }
    }

    return 0;
}


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-08-16 12:41 
头像

注册: 2006-09-02 10:02
帖子: 159
送出感谢: 0 次
接收感谢: 0 次
这样对于我来说还算比较好理解一些!虽然有些“暴力”!哈哈……

在我的电脑上是OK的!不知道在sun的solaris上能不能顺利编译。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-08-16 12:50 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
那还得有编译环境才行哦~


_________________
关注我的blog: ε==3


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-08-16 12:51 
头像

注册: 2007-01-15 17:15
帖子: 3766
送出感谢: 0 次
接收感谢: 0 次
for i in g*
do
j=${i//g1/g2}
#echo $j
mv $i $j
done


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-08-16 13:31 
头像

注册: 2006-09-02 10:02
帖子: 159
送出感谢: 0 次
接收感谢: 0 次
TO iblicf:
先生果真神人也!(三国演义看多了!呵呵!)
谢谢各位了!

j=${i//g1/g2}

这句有点不明白?不知先生是否有空解答小生的困惑啊?


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-08-16 13:44 

注册: 2006-04-11 9:01
帖子: 723
送出感谢: 0 次
接收感谢: 0 次
代码:
${variable//pattern/string}

意思就是将variable中匹配模式pattern的最长部分替换成string。具体到你的例子里就是将当前目录下所有g*开头的文件中匹配g1的部分替换成g2。

另外还有一种表示是
代码:
${variable/pattern/string}

这个就只替换第一个匹配g1的内容。

假设文件名为g1233g1abc,那么第一种模式匹配后新的文件名就变成g2233g2abc,而第二种模式匹配后则是g2233g1abc。


_________________
I would love to change the world, but they won't give me the source code.
http://hi.baidu.com/wienerlee


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-08-16 16:06 
头像

注册: 2006-09-02 10:02
帖子: 159
送出感谢: 0 次
接收感谢: 0 次
TO leeyee:

你太强了!佩服啊!


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2007-08-16 19:14 

注册: 2006-04-11 9:01
帖子: 723
送出感谢: 0 次
接收感谢: 0 次
uusky 写道:
TO leeyee:

你太强了!佩服啊!

这也是书本上的,比你早看到罢啦!


_________________
I would love to change the world, but they won't give me the source code.
http://hi.baidu.com/wienerlee


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译