SFTP Node.js-是否可以使用通配符列出文件?

SFTP Node.js-是否可以使用通配符列出文件?,node.js,sftp,ssh2-sftp,Node.js,Sftp,Ssh2 Sftp,我正在尝试使用npm模块ssh2 SFTP客户端从Node.js中的顶级文件夹列出SFTP服务器中的所有文件。但是,我找不到任何文档或以前的文章讨论是否可以在文件路径中使用通配符。文件路径如下所示: ../mnt/volume_lon1_01/currency/curve/date/filename.csv 可以有许多不同的货币、曲线和日期——事实上有数百种——我需要一种方法,在文件结构的最后一级列出每个文件名 我认为一个明智的方法是使用通配符: ../mnt/volume_lon1_01/

我正在尝试使用npm模块ssh2 SFTP客户端从Node.js中的顶级文件夹列出SFTP服务器中的所有文件。但是,我找不到任何文档或以前的文章讨论是否可以在文件路径中使用通配符。文件路径如下所示:

../mnt/volume_lon1_01/currency/curve/date/filename.csv
可以有许多不同的货币、曲线和日期——事实上有数百种——我需要一种方法,在文件结构的最后一级列出每个文件名

我认为一个明智的方法是使用通配符:

../mnt/volume_lon1_01/ * / * / * / *.csv
但这似乎不起作用,我也找不到任何证据表明它能起作用。有人能建议如何最好地在Node.js中列出SFTP中的每个文件吗

非常感谢,


George

嗯,我认为这在ssh2中是不可能的,但您可以做的是按算法列出它们并访问每一个,伪代码:

Connect SFTP
    List Folders -> Save this to a dictionary
    For each folder in Folders
        List Folders - > Save this to a dictionary
最后,您将有一个dictionary对象,其中包含远程服务器的完整路径,如下所示

{
    sftp: {
        "subfolders": {
            "0": {
                 "name": "/rootfolder",
                 "subfolders": {
                     "0": {
                         "name": "/rootfolder",
                         "subfolders": {
                            ...
                         }
                      }
                  }
             }
        }
    }
}
从这一点上,您可以通过执行以下操作轻松访问您需要的任何内容

sftp["/rootfolder"]["/subfolder1"]... etc

实际上,如果您不需要特定的子文件夹,您可以使用上面的方法向下钻取它们,以达到最低级别的文件,基本上是list,forEach,再次list,直到不再有任何子文件夹