【发布时间】:2019-11-23 12:07:56
【问题描述】:
我有多个日志文件,比如 file1.log file2.log file3.log 等。我想将这些文件内容合并到一个名为 result_file.log 的文件中
有没有 Perl 模块可以做到这一点?
更新:这是我的代码
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use File::Copy;
my @files;
my $dir = "/path/to/directory";
opendir(DIR, $dir) or die $!;
while (my $file = readdir(DIR)) {
# We only want files
next unless (-f "$dir/$file");
# Use a regular expression to find files ending in .log
next unless ($file =~ m/\.log$/);
print "$file\n";
push( @files, $file);
}
closedir(DIR);
print Dumper(\@files);
open my $out_file, ">result_file.log" ;
copy($_, $out_file) foreach ( @files );
exit 0;
你认为这是可行的解决方案吗?
【问题讨论】:
-
您尝试了什么,遇到了什么问题?请向我们展示您的代码。
-
哦,你为什么要用 Perl 做这个?对我来说,这听起来像是
cat命令的工作。 -
@DaveCross 我在问题中添加了脚本。
-
我很困惑——最后一部分,使用
File::Copy::copy...是这个问题的答案吗?如果是这样,我建议避免将答案中发布的内容添加到问题中——这会让读者感到非常困惑。 (例如:最后一部分很好地解决了您的问题,就目前而言,所以如果您有这个问题,那么为什么要问这个问题?) -
@vinodk89 我扩展了 File::Copy 答案 - 请参阅有关 'readdir' 排序与
glob的注释,并建议关闭文件。