2013-12-19 4 views
1

Я хотел бы загрузить несколько файлов из командной строки linux, структура ссылок очень похожа на это https://archive.org/compress/tmg2002-10-23/formats=Flac,Metadata,Text,Checksums,Flac%20FingerPrint, а переменная часть находится в середине /tmg2002-10-23/ с разными датами. Как я могу использовать диспетчер загрузки, например wget/aria2, для загрузки всех файлов? Я попытался с/ТМГ */в обоих Wget/aria2, но он просто не работаетразрешить переменную URL-адрес для загрузки с помощью wget/aria2

+0

Ну, используя '*' в Bash, оболочка думает, что это файл в файловой системе, поэтому он попытается сделать какое-то расширение имени файла. Это не сработает. Вам нужна страница HTML, находящаяся на этом сервере, из которой вы можете очистить доступные даты. В качестве альтернативы, если вы более или менее уверены в диапазоне дат, вы можете просто попытаться перечислить дни в этом диапазоне, просто попробуйте загрузить их и проигнорировать дни без попадания. Но это довольно грубая сила. –

ответ

1

Адаптировано для here.

for d in {0..365} 
do 
    dt=$(date -d "2012-01-01 + $d days" +'%Y-%m-%d') 
    wget "https://archive.org/compress/tmg$dt/formats=Flac,Metadata,Text,Checksums,Flac%20FingerPrint" 
done 

Изменить «2012-01-01» на дату вы хотите начать и изменить 365 на количество дней для загрузки после даты начала. Функция date уже имеет для вас високосные годы.

+0

Примечание: если вы используете Mac, это не сработает, так как функция 'date' отличается от Linux. –

+0

Это работает. Благодарю. – user3070484

0

Например

for i in "2002-10-23" "2002-10-22" 
do wget "https://archive.org/compress/tmg${i}/formats=Flac,Metadata,Text,Checksums,Flac%20FingerPrint" 
done 

Вы должны включать правильные варианты Wget. И, конечно, сценарий может быть намного сложнее.

Смежные вопросы