Я пытаюсь скопировать файлы из нескольких каталогов с приведенным ниже кодом. Он печатает правильный путь и файлы, но не копирует их. Пожалуйста, предложите, как решить эту проблему? БлагодаряPerl копирование файлов из одного каталога в другой
#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;
my $target_dir = "";
my @dirs = grep { -d } glob '/data/results/*';
for my $source_dir (@dirs) {
opendir(my $DIR, $source_dir) || die "can't opendir $source_dir: $!";
my @files = readdir($DIR);
print "the directory is $source_dir\n";
my $run_folder = (split '/', $source_dir)[3];
print "the folder is $run_folder\n";
$target_dir = "/data/backup/$run_folder";
print $target_dir;
foreach my $t (@files)
{
if(-f "$source_dir/$t") {
#Check with -f only for files (no directories)
print "$source_dir/$t";
print "$target_dir/$t";
copy "$source_dir/$t", "$target_dir/$t";
}
}
closedir($DIR);
}
'copy '$ source_dir/$ t", "$ target_dir/$ t" или die $ !; ' – toolic
' '/ data/backup/$ run_folder" 'относится к корню файловой системы. Вы имели в виду сделать его относительно текущего каталога? Копирование в корневую файловую систему, вероятно, требует повышенных привилегий. –
Я думал, что Perl автоматически создал каталог, если он не существует, но я ошибся. Я добавил 'mkdir $ target_dir;' и исправил его. – user3781528