我想从URL获取所有.nc文件,以便使用matlab获取和读取数据。但是,文件名总是很长,并且在所有文件中都有所不同。 例如,我有
url = 'http://sourcename/filename.nc'
源名称始终相同,但文件名很长且有所不同,所以我想使用*来获取url中的任何.nc文件
e.g。
url = 'http://sourcename/*.nc'
但是这不起作用,我猜我需要得到确切的名字 - 所以我不知道该怎么办?
另一方面,我可能也很有兴趣获取每个文件的名称并记录它,但不知道如何做到这一点。
提前多多感谢!!
答案 0 :(得分:1)
HTTP没有实现文件系统抽象。这意味着您请求的每个URL都可以以完全不同的方式处理。在许多情况下,也无法从父级(目录列表,换句话说)获取允许的URL列表。
http://sourcename/
实际上可能会返回包含文件列表的索引文档。在这种情况下,首先获取该文档。然后,您将必须解析内容以提取文件列表。然后,您可以遍历这些文件,为每个文件形成新的URL,并按顺序获取它们。
答案 1 :(得分:1)
如果文本文件中有文件名列表,则可以使用wget
实用程序处理文件并获取所有列出的文件。该文件的格式如下:
http://url.com/file1.nc
http://url.com/file2.nc
(etc)
然后您将按如下方式调用wget
:
$ wget -i url-file.txt
或者,您可以使用wget
递归获取文件,如果它们都位于Web服务器上的同一目录中,例如:
$ wget -r -l1 http://url.com/directory
-r
标志表示递归,-l1
标志表示在递归时不会超过1级。
此解决方案在Matlab外部,但是一旦下载了所有文件,您就可以在本地使用它们。
wget
是一个在linux系统上可用的相当标准的实用程序。它也适用于OSX和Windows。 wget
主页位于:https://www.gnu.org/software/wget/