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