在Net :: SFTP :: Foreign中使用正则表达式模式过滤文件

时间:2018-01-15 13:35:49

标签: regex perl sftp

使用 Net::SFTP::Foreign 模块,是否可以只下载具有特定扩展名的文件。例如,所有.xml个文件

到目前为止我尝试过:

say "Downloading files...";

$sftp->rget(
        REMOTE_DIR,
        LOCAL_DIR,
        newer_only => 'true',
        wanted     => qr/*\.xml/
);

这不会下载任何文件。如果我删除了wanted选项,则会下载所有文件。

1 个答案:

答案 0 :(得分:1)

您的模式有语法错误。如果我运行它,我会得到这个:

  

量词在正则表达式中没有任何关系;标记为< - HERE,m / *< - HERE .xml / at ...

那是因为*是一个特殊字符。它不能独立存在,并且不会像在shell上那样用作通配符。删除它。

只获取XML文件的一个好的有效模式可能是

qr/\.xml$/

$表示字符串的结尾,因此您不会下载名为foo/bar.xml/baz/的文件夹中的所有文件。

模式将匹配包含它的所有内容,无论匹配前是什么。