我正在尝试将数千个文本文件的上下文合并/合并到一个文件夹中。我正在运行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 .......
我知道如何简单地合并文件,但不知道如何按名称对它们进行分组。有人可以给我一些想法吗? 非常感谢
答案 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文件