+ -
当前位置:首页 → 问答吧 → 拜求perl脚本,解决给分在线等

拜求perl脚本,解决给分在线等

时间:2010-12-15

来源:互联网

如:test文件夹里有aa,bb,cc,dd。。。文件,

求:把test文件夹里的文件循环出来,并重新创建文件夹,把文件copy到对应的文件夹内,如a文件夹内放bin文件夹再放aa文件,b文件夹内放bin文件夹再放bb文件,c文件夹内放bin文件夹再放cc文件。。。。

注:a文件夹名为aa文件名去掉后5位,b文件夹名为bb文件名去掉后5位。。。。bin文件夹是固定的2级文件夹。

各位大虾帮下忙,急在线等,解决就给分。。。

作者: jp163123   发布时间: 2010-12-15

晕死了,不是另外一个帖子给了你类似代码吗。你再稍微改一下不就是了。

作者: iambic   发布时间: 2010-12-15

55555555,改了几个小时了,改不出来,我刚学perl,在给个吧,好好学学。。。
拜谢

作者: jp163123   发布时间: 2010-12-15

加了两行代码:
Perl code
use strict;
use warnings;

use File::Copy;
use File::Basename;
use File::Spec;

my $src = "your-source-dir";
my $dest = "your-target-dir";

while (<$src/*>) {
    my $path = $_;
    my $name = fileparse($path);
    next unless $name =~ /^.{5}/; # 忽略文件名长度小于5的文件
    my $target_dir = File::Spec->catfile($dest, $&);
    mkdir($target_dir);
    $target_dir = File::Spec->catfile($target_dir, "bin");
    mkdir($target_dir);
    copy($path, $target_dir);
}


作者: iambic   发布时间: 2010-12-15

五体投地。。你是我的偶像
还有一点不符合要求,
a文件夹名为aa文件名去掉后5位,因为前面不固定,还有就是最好把文件名转换成大写
一并解决了吧。。。。
神呀。。

作者: jp163123   发布时间: 2010-12-15

大侠呀,不在了吗。。。解决下吧。。555555,不然下不了班呀。

作者: jp163123   发布时间: 2010-12-15

Perl code
use strict;
use warnings;

use File::Copy;
use File::Basename;
use File::Spec;

my $src = "your-source-dir";
my $dest = "your-target-dir";

while (<$src/*>) {
    my $path = $_;
    my $name = fileparse($path);
    $name =~ s/.{5}$//;
    next unless $name; # 忽略文件名长度小于5的文件
    my $target_dir = File::Spec->catfile($dest, uc($name));
    mkdir($target_dir);
    $target_dir = File::Spec->catfile($target_dir, "bin");
    mkdir($target_dir);
    copy($path, $target_dir);
}

作者: iambic   发布时间: 2010-12-15

感动,可以下班了,加好友吧,我是赶鸭子上架呀,perl一点都不会。。555555555
推荐本书吧。大侠。。

作者: jp163123   发布时间: 2010-12-15