这是我用于移动文件或复制文件的代码。
#Here $directory = www(so the directory will create like this RubbishBin/www/)
my $takingDir= "RubbishBin/$directory";
#@missingFiles= www/c2.html and www/image/1-3.gif
my $createDir = `mkdir -vp $@ "$takingDir" && cp @missingFiles "$takingDir"`;
say ("By Default Folder taking: RubbishBin");
我想将此文件移到RubbishBin
文件夹中。
我的输出是这样
RubbishBin/www/c2.html
RubbishBin/www/1-3.gif
但是我的问题是如何在RubbishBin/www/
内创建文件夹。另外,下一个文件夹也不一定是image
。就像Download
或video
一样。
我想要这样的输出
RubbishBin/www/c2.html
RubbishBin/www/image/1-3.gif
or
RubbishBin/www/Download/b.gif
www/
之后,我的脚本将选择自动创建该文件夹并像上面的输出一样移动该文件。
答案 0 :(得分:0)
这里是一个示例,说明如何在源($directory
)和目标路径($takingDir
)下创建相同的文件夹结构:
use strict;
use warnings;
use File::Basename qw(dirname);
use File::Copy::Recursive qw(rcopy);
use File::Path qw(make_path);
use File::Spec::Functions qw(catfile);
my $directory = 'www';
my $takingDir= "RubbishBin/$directory";
my @missingFiles= qw(c2.html image/1-3.gif);
for my $name (@missingFiles) {
my $dirname = dirname( $name );
my $dest_path = catfile($takingDir, $dirname);
make_path( $dest_path );
my $source_path = catfile( $directory, $name);
rcopy( $source_path, $dest_path ) or die "copy failed: $!";
}