0

I'm trying to list all files in my SFTP server from a top level folder in Node.js using the npm module ssh2-sftp-client. However, I cannot find any documentation or previous posts which discuss whether using a wildcards in the file paths is possible. The file paths look like so:

../mnt/volume_lon1_01/currency/curve/date/filename.csv

There can be many different currencies, curves and dates - Hundreds in fact - I need a means of just listing every file name at the final level of the file structure.

I thought a sensible approach would be to use wildcards:

../mnt/volume_lon1_01/ * / * / * / *.csv

But this doesn't seem to work and I can't find anything to suggest it could. Can anyone advise how would be best to list every file from SFTP in Node.js?

Many thanks,

George

GeorgeBT1902
  • 195
  • 2
  • 14

1 Answers1

1

Mmm, I don't think this is possible in ssh2, but what you can do is list them algorithmically and access each one, pseudo-code:

Connect SFTP
    List Folders -> Save this to a dictionary
    For each folder in Folders
        List Folders - > Save this to a dictionary

At the end of it you'll have a dictionary object with the full path of the remote server, like so

{
    sftp: {
        "subfolders": {
            "0": {
                 "name": "/rootfolder",
                 "subfolders": {
                     "0": {
                         "name": "/rootfolder",
                         "subfolders": {
                            ...
                         }
                      }
                  }
             }
        }
    }
}

From that you can easily access whatever you need by doing

sftp["/rootfolder"]["/subfolder1"]... etc
Sergio Flores
  • 439
  • 2
  • 8
  • Actually, if you don't need the specific subfolders, you can just drill down through them using the above to reach the lowest level files, basically list, forEach, list again, till there aren't any more subfolders – Sergio Flores Nov 23 '18 at 16:01