使用Perl合並文件
有時需要將整個目錄下的小文件合並到一個文件中,以便查閱檢索
特性
整個目錄完全遍歷,自動存入單個文件
順序遍歷文件
待合並的目錄
合並后的文件內容
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";

