由于工作需要,写了个小脚本,用于把所有文件夹下的文件,每个都放入以他们自己名字命名的文件夹中,并且文件夹名字不能有空格。
包括子目录。
#!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那块儿,“先进到子文件夹,完成工作后再出来,保持路径一致”,虽说这样实现了目的,但是觉得好笨啊,不知道有咩有好点儿的办法,能不用这么干的,效率高一些的……希望大家看了能给我指正指正。