perl批量处理文件
发布时间:2020-12-15 23:57:15 所属栏目:大数据 来源:网络整理
导读:################################################################################ fileGs# 功能: 将指定目录下所有.c和.h文件的tab转成空格、删除行尾空字符# 说明: 此脚本提供了批量处理文件的方法,修改单行线之间的内容可以完成不同的功能# ---------
############################################################################### # fileGs # 功能: 将指定目录下所有.c和.h文件的tab转成空格、删除行尾空字符 # 说明: 此脚本提供了批量处理文件的方法,修改单行线之间的内容可以完成不同的功能 # ------------------------------------------------------------By G-Spider @2014 ############################################################################### #!/usr/bin/perl use strict; use File::Find; use File::Copy; #============================================================================== # tab 所占字节数,根据实际情况调整,一般设为8或4 my $TABLEN = 4; # 目录请使用单引号包含,可包含多个目录,逗号分隔 my @AllDir = ( 'E:test',); #============================================================================== foreach (@AllDir){ find(&;underscores,$_); } print "all complete.n"; #============================================================================== sub underscores{ next if -d $_; next unless /(.c$)|(.h$)/; my $oldfile = $_; my $newfile = "$_.".int(rand(1000)).'.tmp'; my $flag = 0; unlink glob '*.tmp'; open (my $hout,">>",$newfile) or die $!; open (my $hin,"<",$oldfile) or die $!; for (<$hin>){ #-------------------------------------------------------------------------- while (/(t)/g){ my $curindex = pos; my $tmp = ' ' x (($curindex % $TABLEN) ? ($TABLEN + 1 - $curindex % $TABLEN) : 1); s/(t{1})/$tmp/; $flag |= 1; } $flag |= 2 if s/[ t]+$//; print $hout $_; #-------------------------------------------------------------------------- } close $hout; close $hin; if ($flag){ chmod 0755,$oldfile; copy($newfile,$oldfile); print "$oldfile modify complete. %%%%%%%%%%%%% code [$flag]n"; } else{ print "$oldfile isn't change.n"; } unlink $newfile; } 1; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |