Привет всем, кто может помочь. У меня есть проблема, которую я, кажется, не понимаю. Я выбираю файлы и объединяю их с помощью команды "cdo" после объединения, я хочу переместить объединенные файлы в другой каталог. Это работало отлично месяц назад, затем мне пришлось увеличить оперативную память, что заняло месяц, чтобы не выполнить работу над сценарием. Вот начало моего сценария
use strict;
use warnings;
use File::Path;
use File::Find;
use File::Copy qw(copy);
use File::Copy qw(move);
use Path::Tiny;
use Tie::File;
use File::Cat;
Прежде чем я подойду к проблеме, следующая команда перемещения работает после выбора файла
print "Copying $file\n" if $debug;
my $cmd01 = "cp $Input_Data_Dirs[$ll]/$file $Output_Base_Dirs[$mm]";
print "Doing system ($cmd01)\n" if $debug;
system ($cmd01);
Так что я могу переместить несколько файлов с помощьювыше конструкции, затем я перехожу в каталог. Оттуда я объединяю шесть файлов в один
print "doing cat with cdo\n" if $debug;
my $cmd05 = "cdo cat @sixfiles $newfile";
print "Doing system ($cmd05)\n" if $debug;
system ($cmd05);
Вот часть, которая выходит из строя
#-----------------------------------------
#print "Moving combined file\n" if $debug;
#my $cmd21 = "cp $newfile $Output_Base_Dirs[$mm]/$Var_Dirs[$kk]";
#print "Doing system ($cmd21)\n" if $debug;
#system ($cmd21);
#copy $newfile, $Output_Base_Dirs[$mm]/$Var_Dirs[$kk];
move $newfile, $Output_Base_Dirs[$mm]/$Var_Dirs[$kk];
#----------------------------------------------------
Команды unix "cp" и "mv" выдают ошибку
cp: missing destination file operand after 'pr_AFR-44_CNRM-CERFACS-CNRM-CM5_historical_r1i1p1_CLMcom-CCLM4-8-17_v1_day_19710101_20001231.nc'
Try 'cp --help' for more information.
sh: 2: /home/suman/CORDEX/DATA/historical/precip: Permission denied
и
mv: missing destination file operand after 'pr_AFR-44_CNRM-CERFACS-CNRM-CM5_historical_r1i1p1_CLMcom-CCLM4-8-17_v1_day_19710101_20001231.nc'
Try 'mv --help' for more information.
sh: 2: /home/suman/CORDEX/DATA/historical/precip: Permission denied
Я удостоверился, что нет проблем с правами доступа, введя команду
sudo chmod -Rv ugo +rwx CORDEX
С другой стороны, встроенные в Perl команды "копировать" и«Переместить» дают следующие ошибки
Argument "precip" isn't numeric in division (/) at merge_files.pl line 247.
Argument "/home/suman/CORDEX/DATA/historical" isn't numeric in division (/) at merge_files.pl line 247.
Illegal division by zero at merge_files.pl line 247.
Я действительно побежден этими ошибками. Я буду признателен за любую помощь, если возможно, чтобы решить эту проблему.
Я проголосовал за решение от Dave Cross по той причине, что оно устраняет ошибку нецифровости / деления на ноль. Спасибо Дэйв за это. Однако после определения
my $target_dir="$Output_Base_Dirs[$mm]/$Var_Dirs[$kk]";
обе команды:
my $cmd21 = "cp -v $newfile --target-directory=$target_dir";
и мой $ cmd21 = "mv -v $ newfile --target-directory = $ target_dir"
выдает ту же ошибку
cp: missing destination file operand after 'pr_AFR-44_CNRM-CERFACS-CNRM-CM5_historical_r1i1p1_CLMcom-CCLM4-8-17_v1_day_19710101_20001231.nc'
Try 'cp --help' for more information.
sh: 2: --target-directory=/home/suman/CORDEX/DATA/historical/precip: not found
, но target_dir существует. Две команды Perl
copy $newfile, "$target_dir" or die "copy operation failed: $!";
move $newfile, "$target_dir" or die "move operation failed: $!";
move operation failed: No such file or directory at merge_files.pl line 249.
copy operation failed: No such file or directory at merge_files.pl line 248.
Я действительно сбит с толку.