如何使用Perl将同一目录中的文件复制到另一个子文件夹

zyfwsgd6  于 2023-10-24  发布在  Perl
关注(0)|答案(1)|浏览(159)

我有一个名为test/first的文件夹,其中有几个文件夹和文件。基本上,我需要将文件名中包含“.log”的文件复制到test/first中的另一个文件夹中

#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;

my $source_dir = "/test/first";
my $dest_dir = "/test/first/second";

my @files = glob("$source_dir/*");

foreach my $file (@files){
  if ($file =~ /\.log/) {
  #print ("$file");
   move($file, "$dest_dir/$file");
}
}
qv7cva1a

qv7cva1a1#

您需要使用File::Basename从路径中提取文件名。
您的脚本的问题是,它的解析目标目录如下-/test/first/second/first/a.log,其中/test/first/second/first/不存在。
试试下面的脚本,它会为你做的工作。

#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;
use File::Basename;

my $source_dir = "/test/first";
my $dest_dir = "/test/first/second";

my @files = glob("$source_dir/*");

foreach my $file (@files){
    my ($fname, $dir) = fileparse($file);
    if ($fname=~ /\.log/) {
        print "Running: moving $file, $dest_dir/$fname\n";
        move($file, "$dest_dir/$fname");
    }
}

相关问题