Как переместить выбранные файлы из одной папки в другую папку с подпапкой также - PullRequest
0 голосов
/ 29 марта 2019

Это мой код для перемещения файлов или копирования файлов.

#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/ мой скрипт выберет автоматически создать эту папку и переместить этот файл, как указано вышевыход.

1 Ответ

0 голосов
/ 29 марта 2019

Вот один пример того, как вы можете создать одинаковую структуру папок как для источника ($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: $!";
}
...