使用Perl合併文件

使用Perl合併文件

有時須要將整個目錄下的小文件合併到一個文件中,以便查閱檢索code

特性


整個目錄徹底遍歷,自動存入單個文件
順序遍歷文件blog

待合併的目錄


合併後的文件內容


syscfg/test1  
syscfg/test2  


uart/uart7/uart7_dma1  
uart/uart7/uart7_dma2  


wwdg/prescaler

Perl代碼


#!/usr/bin/perl
use warnings;

###########################################
#./mergelst.pl lst
###########################################

my $indir = $ARGV[0];

opendir DIR, $indir or die "Connot open $indir: $!";    #獲得目錄句柄

unlink "temp.lst";
open(OUTFILE, ">>temp.lst") || die ("Could not open file temp.lst ! \n");  #輸出文件句柄

foreach my $file (sort readdir DIR){                    #目錄下文件排序後遍歷文件
    if($file =~ /^\./){
        next;                                           #'.''..'目錄去除,不包括在遍歷的範圍以內
    }
    print "$indir$file\n";

    open(INFILE, "$indir/$file") || die ("Could not open file $file ! \n"); #打開目錄下的文件
      while ($line = <INFILE>){                                             #循環輸出到輸出文件中,合併
          chomp($line);
          print OUTFILE  "$line \n";
      }
    print OUTFILE  "\n\n";
    close INFILE;
}

close OUTFILE;
rename 'temp.lst','merge_lst';                 #文件重名名
print  "\n merge_lst\n\n";
相關文章
相關標籤/搜索