有没有办法使用Perl scp匹配通配符模式的多个文件?
说服务器A有curr目录包含.pdf和.txt文件,我想只将.pdf文件移到/ home / userid下的服务器B 我使用Net :: SCP,但我发现没有正常scp命令中的批量复制,例如。 scp * .pdf userid @ serverB
>cat test.pl
use Net::SCP;
$scp = Net::SCP->new( "serverB", "userid" );
$scp->put("test.pdf") or die $scp->{errstr};
我想更改为$ scp-> put(" * .pdf")或die $ scp-> {errstr};如果我改为* .pdf perl throws error
* .pdf:没有这样的文件或目录
我已经创建了无密码登录。有没有办法批量匹配模式文件?
答案 0 :(得分:2)
使用Net::OpenSSH:
mvn install -P resume-at-pre-int-test
或者,如果您在Windows中运行该脚本,Net::SSH::Any提供了相同的界面:
use Net::OpenSSH;
my $ssh = Net::OpenSSH->new('serverB', user => 'userid');
$ssh->scp_put({glob => 1}, '*.pdf', '.') or die $ssh->error;
答案 1 :(得分:1)
*
字符是由shell扩展的通配符(不同的shell可能有不同的扩展规则),因此SSH(或SCP)对此一无所知。
此外,SSH没有"集成"支持在目录中列出文件。
如果您要列出文件,您必须通过远程ls *.pdf
(通过使用Net::SSH::Perl)或者切换到“丑陋的方式”#34;与Net::SFTP不同的东西,它支持opendir
函数。