如何使用wget检索位于http子文件夹中的文件

时间:2014-03-26 14:52:50

标签: unix wget

我试图从中检索某些文件http://oceandata.sci.gsfc.nasa.gov/MERIS/L3BIN/2010/。在该位置内,存在与天相对应的子文件夹。每隔8天,有一个名称包含字符串* L3b_8D_CHL.main.bz2的文件,我想下载它。 (例如,一条完整路径是:" http://oceandata.sci.gsfc.nasa.gov/MERIS/L3BIN/2012/001/M20100012010008.L3b_8D_CHL.main.bz2")。

对于单个文件,我可以通过以下方式下载:

wget -q -O - http://oceandata.sci.gsfc.nasa.gov/MERIS/L3BIN/2012/001/ |grep 8D_CHL|wget -N --wait=0.5 --random-wait --force-html -i -

有没有办法可以遍历http://oceandata.sci.gsfc.nasa.gov/MERIS/L3BIN/2012/中的所有文件夹并查找与" 8D_CHL"匹配的文件?模式,然后下载它们?

1 个答案:

答案 0 :(得分:0)

HTTP并没有真正具有子文件夹的概念,虽然该页面看起来确实如此,但它仍然会返回一个HTML页面,其中包含您需要解析的标记和链接。

但是,因为这些文件的命名是如此可预测,所以我很想忽略HTML并猜测文件的位置。

他们被命名为:

2010/001/M20100012010008.L3b_8D_CHL.main.bz2
2010/009/M20100092010016.L3b_8D_CHL.main.bz2

Which is

2010/001/M{year}{day}{year}{day+7}.L3b_8D_CHL.main.bz2

所以我会猜测下载链接:

#!/bin/bash
for year in `seq 2002 2012`; do
    for day in `seq -w 1 8 365`;
    do
        echo wget http://oceandata.sci.gsfc.nasa.gov/cgi/getfile/M$year$day$year$(printf "%03d" `expr $day + 7`).L3b_8D_CHL.main.bz2
    done
done

示例输出:

wget http://oceandata.sci.gsfc.nasa.gov/cgi/getfile/M20122572012264.L3b_8D_CHL.main.bz2
wget http://oceandata.sci.gsfc.nasa.gov/cgi/getfile/M20122652012272.L3b_8D_CHL.main.bz2
wget http://oceandata.sci.gsfc.nasa.gov/cgi/getfile/M20122732012280.L3b_8D_CHL.main.bz2

NB。除了第361天到第365天的最后一年之外,你必须采用另一种方式。