如何将选定的文件从一个文件夹移动到另一个文件夹以及子文件夹

时间:2019-03-29 11:12:02

标签: linux shell perl copy move

这是我用于移动文件或复制文件的代码。

#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。就像Downloadvideo一样。

我想要这样的输出

RubbishBin/www/c2.html
RubbishBin/www/image/1-3.gif
or 
RubbishBin/www/Download/b.gif 

www/之后,我的脚本将选择自动创建该文件夹并像上面的输出一样移动该文件。

1 个答案:

答案 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: $!";
}