Perl:将文件从一个位置复制到另一个位置
Perl: Copy file from one location to another
这只是一个小脚本,我正在 运行 连续循环检查目录并移动其中的每个文件。此代码有效,我 运行 它在后台进程中。但由于某种原因,我收到以下错误:'/home/srvc_ibdcoe_pcdev/Niall_Test/new_dir/..' and '/home/srvc_ibdcoe_pcdev/Niall_Test/perl_files/..' are identical (not copied) at move2.pl line 27
知道为什么它告诉我它是相同的,即使路径不同吗?
非常感谢
下面的脚本
#!/usr/bin/perl
use diagnostics;
use strict;
use warnings;
use File::Copy;
my $poll_cycle = 10;
my $dest_dir = "/home/srvc_ibdcoe_pcdev/Niall_Test/perl_files";
while (1) {
sleep $poll_cycle;
my $dirname = '/home/srvc_ibdcoe_pcdev/Niall_Test/new_dir';
opendir my $dh, $dirname
or die "Can't open directory '$dirname' for reading: $!";
my @files = readdir $dh;
closedir $dh;
if ( grep( !/^[.][.]?$/, @files ) > 0 ) {
print "Dir is not empty\n";
foreach my $target (@files) {
# Move file
move("$dirname/$target", "$dest_dir/$target");
}
}
}
您需要从 @files
.
中过滤掉特殊的 ..
和 .
条目
#!/usr/bin/perl
use diagnostics;
use strict;
use warnings;
use File::Copy;
my $poll_cycle = 10;
my $dest_dir = "/home/srvc_ibdcoe_pcdev/Niall_Test/perl_files";
while (1) {
sleep $poll_cycle;
my $dirname = '/home/srvc_ibdcoe_pcdev/Niall_Test/new_dir';
opendir my $dh, $dirname
or die "Can't open directory '$dirname' for reading: $!";
my @files = grep !/^[.][.]?$/, readdir $dh;
closedir $dh;
if (@files) {
print "Dir is not empty\n";
foreach my $target (@files) {
# Move file
move("$dirname/$target", "$dest_dir/$target");
}
}
}
您看到的消息是正确的。由于 ..
; 两个路径都解析为同一目录;都解析为 /home/srvc_ibdcoe_pcdev/Niall_Test
..
指目录的父目录。
这只是一个小脚本,我正在 运行 连续循环检查目录并移动其中的每个文件。此代码有效,我 运行 它在后台进程中。但由于某种原因,我收到以下错误:'/home/srvc_ibdcoe_pcdev/Niall_Test/new_dir/..' and '/home/srvc_ibdcoe_pcdev/Niall_Test/perl_files/..' are identical (not copied) at move2.pl line 27
知道为什么它告诉我它是相同的,即使路径不同吗?
非常感谢
下面的脚本
#!/usr/bin/perl
use diagnostics;
use strict;
use warnings;
use File::Copy;
my $poll_cycle = 10;
my $dest_dir = "/home/srvc_ibdcoe_pcdev/Niall_Test/perl_files";
while (1) {
sleep $poll_cycle;
my $dirname = '/home/srvc_ibdcoe_pcdev/Niall_Test/new_dir';
opendir my $dh, $dirname
or die "Can't open directory '$dirname' for reading: $!";
my @files = readdir $dh;
closedir $dh;
if ( grep( !/^[.][.]?$/, @files ) > 0 ) {
print "Dir is not empty\n";
foreach my $target (@files) {
# Move file
move("$dirname/$target", "$dest_dir/$target");
}
}
}
您需要从 @files
.
..
和 .
条目
#!/usr/bin/perl
use diagnostics;
use strict;
use warnings;
use File::Copy;
my $poll_cycle = 10;
my $dest_dir = "/home/srvc_ibdcoe_pcdev/Niall_Test/perl_files";
while (1) {
sleep $poll_cycle;
my $dirname = '/home/srvc_ibdcoe_pcdev/Niall_Test/new_dir';
opendir my $dh, $dirname
or die "Can't open directory '$dirname' for reading: $!";
my @files = grep !/^[.][.]?$/, readdir $dh;
closedir $dh;
if (@files) {
print "Dir is not empty\n";
foreach my $target (@files) {
# Move file
move("$dirname/$target", "$dest_dir/$target");
}
}
}
您看到的消息是正确的。由于 ..
; 两个路径都解析为同一目录;都解析为 /home/srvc_ibdcoe_pcdev/Niall_Test
..
指目录的父目录。