按类似名称合并文本文件

时间:2015-02-18 23:49:52

标签: perl merge

我正在尝试将数千个文本文件的上下文合并/合并到一个文件夹中。我正在运行Windows,可以使用perl或shell脚本。名称如下。

0001_001.txt 0001_002.txt 0001_003.txt

0002_001.txt

0003_001.txt 0003_002.txt 0003_003.txt 0003_004.txt ........

我希望他们合并为以下文件。例如,以0001开头的文件名将合并为0001.txt。并且所有新的合并文件将保存到另一个文件夹。

0001.txt 0002.txt 0003.txt .......

我知道如何简单地合并文件,但不知道如何按名称对它们进行分组。有人可以给我一些想法吗? 非常感谢

1 个答案:

答案 0 :(得分:0)

以下代码可以解决问题。

opendir my $dh, $source_dir or die $!
my %h;
while ( my $name = readdir($dh) ) {
   $name ~~ /^(\d+)_(\d+).txt$/ or warn "Bad file name"
   $h{$1}{$2} = 1;
}
while (my ($name, $parts) = each %h) {
    for my $part ( sort keys %$parts ) {
        concatfile( "$name\_$part.txt", "$name.txt")
    }
}

你需要自己编写concat文件