Perl:打开一个文件夹中的文件,并将编辑过的文件保存在另一个文件夹中

时间:2014-01-27 13:36:37

标签: perl file directory

我有一个名为“input”的文件夹和一个名为“output”的文件夹。在“输入”中,我有几个.txt文件。我需要一个读取这些文件的perl脚本,编辑它们(删除10个第一行)并将新的.txt文件保存在“output”文件夹中。使用perl可以做到这一点吗?

谢谢

2 个答案:

答案 0 :(得分:1)

为什么要使用Perl?

tail -n +N将从N行开始输出文件,因此如果您要删除前10行,可以使用tail -n +11 file > new_file

要自动化文件夹中的所有文件,请参阅此bash one-liner:

for i in input/*.txt; do e=`basename $i`; tail -n +11 $i > output/${e}; done

修改:使用现代符号tail -n +N代替较早的deprecated syntax

答案 1 :(得分:1)

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

opendir IN, 'input';
my @in = grep { /^[^.]/ } readdir IN; # read all file names form dir except names started with dot
closedir IN;

for my $in (@in) {
  open IN, '<', "input/$in" || next;
  open OUT, '>', "output/$in" || die "can't open file output/$in";
  while(<IN>) { #read file line by line
    print OUT $_ if $. > 10; #print the last line $_ to the file if line number $. is bigger than 10 
  }
  close OUT;
  close IN;
}