目录下文件放入以自身文件名命名的文件夹中

由于工作需要,写了个小脚本,用于把所有文件夹下的文件,每个都放入以他们自己名字命名的文件夹中,并且文件夹名字不能有空格。

包括子目录。

#!perl

(my $thisfile)=$0=~/.*\\(.*)/;
my @curfile=grep { $_ ne $thisfile } glob('*');
&action(\@curfile);

sub action {
    my $test=shift;
    for my $file(@$test) {
        if (-d $file){
            chdir $file; 
            my @subfile = glob("*");
            &action(\@subfile);
            chdir ".."; 
            next;
            }
        (my $dirname)=$file=~/(.*)\..*/;
        $dirname=~s/\s+/_/g;
    mkdir $dirname;
    rename $file ,"$dirname/$file" ;
    }
}

 里面的chdir那块儿,“先进到子文件夹,完成工作后再出来,保持路径一致”,虽说这样实现了目的,但是觉得好笨啊,不知道有咩有好点儿的办法,能不用这么干的,效率高一些的……希望大家看了能给我指正指正。

posted @ 2013-07-31 16:13  沉默爆破手  阅读(505)  评论(0编辑  收藏  举报