加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响

发布时间:2020-12-15 23:38:48 所属栏目:大数据 来源:网络整理
导读:不会读取 影藏文件 main #!/usr/bin/perlmy ($path,$rp) = @ARGV;sub search_file{ my ($fname,$rp) = @_; # 获取操作文件名 和 查询的正则 my ($o) = split("/",$rp); open(of,"$fname") or die "$fname 文件打开失败!$!"; while(of){ chomp; if($_ =~ /$o/

不会读取 影藏文件

main

#!/usr/bin/perl
my ($path,$rp) = @ARGV;

sub search_file{
    my ($fname,$rp) = @_; # 获取操作文件名 和 查询的正则
    my ($o) = split("/",$rp);
    open(of,"<$fname") or die "$fname 文件打开失败!$!";
    while(<of>){
        chomp;
        if($_ =~ /$o/){
            print "$fnamen";
            return 1;
        }
    }
    return 0;
}

sub change_file{
    my ($fname,$rp) = @_; # 获取操作文件名 和 替换的正则
    if( !search_file($fname,$rp) ){ # 不存在关键字直接返回
       return 0;
    }

    my @data = ();
    my ($o,$n) = split("/","<$fname") or die "$fname 文件打开失败!$!";
    while(<of>){
        chomp;
        $_ =~ s/$o/$n/;
        push @data,"$_n";
    }

    chomp @data; # 砍掉最后的 n
    open(wf,"+>$fname") or die "Error: 文件$nfname打开失败$!";
    print wf @data;
    return 1;
}

my @change_files = (); # 受到影响的文件

sub scan_file{
    my @files = glob(@_[0]);
    foreach (@files){
        if(-d $_){
            my $path = "$_/*";
            scan_file($path);
        }elsif(-f $_){
            if( change_file($_,$rp) ){
                push @change_files,$_;
            }
        }
    }
}

scan_file($path);

执行

读取文本, world替换为ajanwu

λ perl main "./test/*" world/ajanuw
./test/dist/bundle.html
./test/src/index.html

读取指定类型文件

修改下 scan_file 函数

my $path = "./test/*";
my @suffix_names = qw[.css .html];

sub scan_file{
    my @files = glob(@_[0]);
    foreach (@files){
        if(-d $_){
            my $path = "$_/*";
            scan_file($path);
        }elsif(-f $_){
           my $fname = $_;
           foreach (@suffix_names){
               if($fname =~ m/$_$/){
                   print "$fnamen";
               }
           }
        }
    }
}

scan_file($path);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读