2016-05-15 1 views
3

Например, я хочу, чтобы загрузить данные: http://nimbus.cos.uidaho.edu/DATA/OBS/Как загрузить пакет данных с помощью командной строки linux?

со ссылкой:

http://nimbus.cos.uidaho.edu/DATA/OBS/pr_1979.nc

в

http://nimbus.cos.uidaho.edu/DATA/OBS/pr_2015.nc

Как я могу написать сценарий, чтобы загрузить все их? с wget? и как зацикливать ссылки с 1979 по 2015 год?

+0

Является ли диапазон всего 1979-2015 гг., Или вы ищете что-то более динамичное, которое проверяет, существует ли первый год? –

+0

Ну, да, для этого примера я могу проверить это на моих глазах для простоты. Поэтому просто найдите код цикла. Возможно, какой-то скрипт вроде 'wget http: //nimbus.cos.uidaho.edu/DATA/OBS/pr_ *. Nc' или' wget .../pr_ [1979-2015] .nc' – breezeintopl

ответ

2

Возможно, что-то похожее на цикл цикла, повторяющийся над предопределенной серией.

Непроверенный код:

for i in {1979..2015}; do 
    wget http://nimbus.cos.uidaho.edu/DATA/OBS/pr_$i.nc 
done 
+0

Вы также можете быть заинтересованы в этот ответ http://stackoverflow.com/questions/169511/how-do-i-iterate-over-a-range-of-numbers-defined-by-variables-in-bash –

+0

Спасибо! Это очень полезно! Есть ли у вас какие-либо предлагаемые документы или книги или учебные пособия по изучению этого типа кода bash? – breezeintopl

+0

@breezeintopl честно, не совсем. вы можете попробовать опубликовать это как вопрос на http://softwarerecs.stackexchange.com. Лично я просто просматриваю переполнение стека для всего, что мне нужно делать, и ответы чаще всего здесь уже есть. –

3

wget может взять файл в качестве входных данных, который содержит URL-адрес в строку.

wget -ci url_file 

-i: входной файл
-c: резюме функциональность

Так все, что вам нужно сделать, это поместить URL-адреса в файл и использовать этот файл с Wget.

Простой цикл, такой как Jeff Puckett II's answer, будет достаточным для вашего конкретного случая, но если вам приходится иметь дело с более сложными ситуациями (случайными URL-адресами), этот метод может пригодиться.

+0

Спасибо вам большое за ваш ответ! Это на самом деле приносит мне еще одну (две) проблемы (я обычно делаю это вручную T. T): 1. Как создать файл с повторным контентом? ... pr_1979.nc \ n ... \ n ... pr_2015.nc "? 2. Как создать 30+ файлов с именами типа «1979.txt» и «http .../pr_1979.nc»? Ну, я думаю, я могу использовать, скажем, R, чтобы объединить длинные строки контента с переменной, скажем, x = 1979. Но я не думаю, что это обычный способ сделать это. Поскольку я не специалист по информатике, я не знаком с тем, как создавать партию файлов. (Может быть, вундеркинды используют vim для этого?) – breezeintopl

+0

ОК, так что, возможно, на основе вышеуказанного ответа это нечто вроде 'echo $ text1 $ i $ text2 >> filename $ i;' в цикле. – breezeintopl

+0

@breezeintopl: да, но он побеждает цель (создавая каждый файл для каждой ссылки). 'filename $ i' должно быть 'filename', чтобы все ссылки попадали в один и тот же файл. Хотя я обычно извлекаю URL-адреса из источника html с помощью текстового редактора, как правило, с помощью [tag: sed]. – Jahid