perl批量处理文件的例子

发布时间:2020-01-14编辑:脚本学堂
我们可以用perl的opendir函数批量处理一批序列文件,就是每个序列单独一个文件,大概一百多个文件,把所有文件批量打开,做处理,然后再关上,改原文件或者生成个新文件都可以。

我们可以用perl的opendir函数批量处理一批序列文件,就是每个序列单独一个文件,大概一百多个文件,把所有文件批量打开,做处理,然后再关上,改原文件或者生成个新文件都可以。

例子:
 

复制代码 代码如下:

#!/usr/bin/perl -w

$dirname = "/tmp";  #指定一个目录

opendir ( DIR, $dirname ) || die "Error in opening dir $dirnamen";
while( ($filename = readdir(DIR))){
print("$filenamen");  #循环输出该目录下的文件。
### do something ###
}
closedir(DIR);

上面是循环取得该目录下的文件。这样就能循环对文件进行处理了,具体打开某个文件更改后,保存文件。

根据上面这个回答,我写了一个实际应用最简单的例子,就是把每个文件复制一次:
 

复制代码 代码如下:

#!/usr/bin/perl
use warnings;
use strict;

my (%h, $filename);
my $dirname="/home/liuguiyou/lane6_7/ex/";

opendir (DIR, $dirname)|| die "Error in opening dir $dirnamen";

while (($filename=readdir(DIR))){
         open (FILE, "/home/liuguiyou/lane6_7/ex/".$filename)|| die "can not open the file $filenamen";
         open (OUT, ">/home/liuguiyou/lane6_7/ex/$filename.bak")|| die "can not open the $filename.bakn";

           while (<FILE>){
                  print  OUT "$_";
}
}
 

如果想对文件进行处理,可以做适当修改即可,类似于对单个文件的处理

在window下,要对文件进行判断
 

复制代码 代码如下:

#!/usr/bin/perl
use warnings;
use strict;

my ($dirname, $filename);
$dirname = "E:/xiao/"; 
opendir (DIR, $dirname ) || die "Error in opening dir $dirnamen";
while( ($filename = readdir(DIR))){
if ($filename=~"txt"){ 
open (FILE, "E:/xiao/".$filename)|| die "can not open the file $filenamen"; 
 while (<FILE>){
    chomp;
    print "$filenamet$_n" ;
}
}
}
closedir(DIR);