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

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

包括子目录。

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

原文地址:https://www.cnblogs.com/agostop/p/3228068.html