В curl отсутствует пауза между запросами, в wget отсутствуют динамические имена выходных файлов, есть ли готовая альтернатива последовательной загрузке файлов?

У меня уже была похожая проблема, и я решил ее, создав туннель SSH с помощью Putty.

1
27.07.2020, 13:58
1 ответ

It seems to struggle with special characters in URLs, and quotes around the URL can't be used because the range {1..100} then appears to go unrecognized.

Это связано с тем, что этот синтаксис диапазона на самом деле не является функцией wget, это функция вашей оболочки (, например. bash ), который расширяет аргументы перед передачей их в wget, сравните:

$ echo abc{1..5}
abc1 abc2 abc3 abc4 abc5

или

$ ruby -e 'p ARGV' abc{1..5}
["abc1", "abc2", "abc3", "abc4", "abc5"]

Если указать аргумент в кавычках, оболочка не будет раскрывать его:

$ echo 'abc{1..5}'
abc{1..5}

Однако вы можете цитировать все, кроме диапазона:

$ echo 'abc'{1..5}'def'
abc1def abc2def abc3def abc4def abc5def

However, more importantly, wget has no support for naming the output dynamically

wgetне имеет функций для работы с такими диапазонами, потому что такие диапазоны не являются функцией wget.

Так что нет, кажется, вы не можете сделать все это с помощью одной команды. Но вы все равно можете поместить его в один вкладыш:

for i in {1..100}; do curl "https://example.com/${i}.jpg" -o "output_${i}.jpg"; sleep 5; done

Инструменты UNIX спроектированы таким образом, чтобы быть достаточно целенаправленными, но при этом легко программируемыми. Некоторые из них создали множество вариантов для выполнения общих задач за один раз, но они никогда не смогут охватить каждый вариант использования самостоятельно.

10
18.03.2021, 23:17

Теги

Похожие вопросы