perl批量处理文件

Posted 浙江省生物信息学学会

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl批量处理文件相关的知识,希望对你有一定的参考价值。

问题:

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


回答:可以用opendir函数哦。

例子:

#!/usr/bin/perl -w

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

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

while( ($filename = readdir(DIR))){

print("$filename\n");       #循环输出该目录下的文件。

### 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 $dirname\n";


while (($filename=readdir(DIR))){


         open (FILE, "/home/liuguiyou/lane6_7/ex/".$filename)|| die "can not open the file $filename\n";

         open (OUT, ">/home/liuguiyou/lane6_7/ex/$filename.bak")|| die "can not open the $filename.bak\n";


           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 $dirname\n";

 

while( ($filename = readdir(DIR))){

if ($filename=~"txt"){

 

open (FILE, "E:/xiao/".$filename)|| die "can not open the file $filename\n";

 

 while (<FILE>){

    chomp;

    print "$filename\t$_\n" ;  

   

}

}

}

closedir(DIR);


以上是关于perl批量处理文件的主要内容,如果未能解决你的问题,请参考以下文章

Perl 使用perl命令批量替换文件内容

使用Perl 6进行批处理文本处理

linux下rename用法--批量重命名

linux下rename用法--批量重命名

Fluent多文件处理 批量处理

shell 批量处理