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); 执行
λ perl main "./test/*" world/ajanuw ./test/dist/bundle.html ./test/src/index.html 读取指定类型文件
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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |