有时需要将整个⽬录下的⼩⽂件合并到⼀个⽂件中,以便查阅检索
特性
整个⽬录完全遍历,⾃动存⼊单个⽂件
顺序遍历⽂件
待合并的⽬录
合并后的⽂件内容
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"
¥
6
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
使用Perl合并文件
使⽤Perl合并⽂件使⽤Perl合并⽂件
有时需要将整个⽬录下的⼩⽂件合并到⼀个⽂件中,以便查阅检索
特性
整个⽬录完全遍历,⾃动存⼊单个⽂件
顺序遍历⽂件
待合并的⽬录
合并后的⽂件内容
syscfg/test1
syscfg/test2
第 1 页
uart/uart7/uart7_dma1
uart/uart7/uart7_dma2
wwdg/prescaler
Perl代码
#!/usr/bin/perl
use warnings
###########################################
#./mergelst.pl lst
###########################################
第 2 页
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#'.''..'⽬录去除,不包括在遍历的范围之内
第 3 页
}
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
}
第 4 页
close OUTFILE
rename 'temp.lst','merge_lst'#⽂件重名名
print "\n merge_lst\n\n"
比如创建 D:\tmpA\tmpB 这样的目录,那么可以用命令:mkdir("D:\\tmpA") unless(-d "D:\\tmpA")#创建 D:\tmpA
mkdir("D:\\tmpA\\tmpB ") unless(-d "D:\\tmpA\\tmpB")#创建D:\tmpA\tmpB
注:
mkdir("D:\\tmpA") unless(-d "D:\\tmpA") 整体的意思表示如果不存在目录D:\\tmpA 那么创建目录 D:\\tmpA。
-d "D:\\tmpA“ 表示目录是否存在,如果存在则为真,不存在为假。
如果要判断文件是否存在 则用 -e
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)