ddlld345 / Computer / perl操作目录程序

分享

   

perl操作目录程序

2015-03-06  ddlld345

#!/usr/bin/perl -w
use strict;
use 5.016;
my @dirs = glob("*"); #收集目录,程序只遍历两级目录,不用递归
sub renamedire{  #更改目录名 例5-1改为ex5_1
    foreach my $dir (@dirs){
        if(-d $dir){ 
            my $newdir = $dir;
            $newdir =~ s/(.*)-(.*)/ex$1_$2/g;
            rename $dir, $newdir;
        }
    }
}
sub renamedire1{ #改回去目录名 例ex5_1改回5-1
    foreach my $dir (@dirs){
        if(-d $dir){ 
            my $newdir = $dir;
            $newdir =~ s/ex(.*)_(.*)/$1-$2/g;
            rename $dir, $newdir;
        }
    }
}
sub modifile{  #修改java文件,加包名,只加当前目录名,例在ex5_1下,加package ex5_1;
    my ($file_name, $dir_name) = @_;
    open my $fh1,$file_name or die "Not Open: $!";
    open my $fh2,"> $file_name.bak" or die "Not Open: $!";
    my @strs=<$fh1>;
    unshift @strs,"package $dir_name;\n";
    foreach my $str (@strs){
 print $fh2 "$str";
    }
    close $fh2;
    close $fh1;
    ulfile($file_name, "$file_name.bak"); #删原来文件,改新文件名
}
sub modifile1{ #修改java文件,删包名;
    my $file_name = shift @_;
    open my $fh1,$file_name or die "Not Open: $!";
    open my $fh2,"> $file_name.bak" or die "Not Open: $!";
    my @strs=<$fh1>;
    foreach my $str (@strs){
        if ($str=~/^package/) {
            print $fh2 "";
        }
        else{
            print $fh2 "$str";            
        }
    }
    close $fh2;
    close $fh1;
    ulfile($file_name, "$file_name.bak"),
}
sub opdirf{  #遍历文件夹
    my $dir = shift;
    my $count;
    if(-d $dir){
        chdir $dir or die "can't chdir $dir: $!"; #进入文件夹
        my @files=glob("*.java");
        foreach my $file (@files){
            ++$count;
            modifile1($file);
            modifile($file, $dir);
        }
        if ($count eq @files) { #跳出文件夹
            chdir "\..";
        }
    }

}
sub ulfile{  #删旧文件,改新文件
    my ($file1, $file2) = @_;
    my $newfile = $file1;
    unlink $file1;
    rename $file2, $newfile;
}

&renamedire(@dirs); #更改目录名
#&renamedire1(@dirs); #改回目录名
@dirs=glob("*"); #收集更改后目录名

foreach my $dir (@dirs) { #操作目录
    &opdirf($dir);  
}

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>