我正在嘗試使用 curl 下載多個 URL:
user@PC:~$ curl -LOJ "https://example.com/foo.jpg" "https://example.com/bar.jpg"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 445 100 445 0 0 517 0 --:--:-- --:--:-- --:--:-- 518
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>404 - Not Found</title>
</head>
<body>
<h1>404 - Not Found</h1>
<script type="text/javascript" src="//wpc.75674.betacdn.net/0075674/www/ec_tpm_bcon.js"></script>
</body>
</html>
user@PC:~$ ls foo.jpg
foo.jpg
user@PC:~$ ls bar.jpg
ls: cannot access 'bar.jpg': No such file or directory
但它僅將引數 ( -LOJ) 應用于第一個 URL,因此僅下載第一個檔案。
如果我為每個 URL 重復引數,則不再出現此問題并且兩個檔案都會被下載:
user@PC:~$ curl -LOJ "https://example.com/foo.jpg" -LOJ "https://example.com/bar.jpg"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 445 100 445 0 0 481 0 --:--:-- --:--:-- --:--:-- 481
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 445 100 445 0 0 1534 0 --:--:-- --:--:-- --:--:-- 1539
user@PC:~$ ls foo.jpg
foo.jpg
user@PC:~$ ls bar.jpg
bar.jpg
那么有沒有辦法讓引數應用于傳遞給 curl 的所有 URL,而不必為每個 URL 重復它?
uj5u.com熱心網友回復:
你需要使用-n1,比如
{ echo "https://example.com/foo.jpg"; echo "https://example.com/bar.jpg"; } | xargs -n1 curl -LOJ
告訴 xargs 為每個 url 啟動一個 curl,而不是使用兩個 url 作為引數運行單個 curl。
uj5u.com熱心網友回復:
那么有沒有辦法讓引數應用于傳遞給 curl 的所有 URL,而不必為每個 URL 重復它?
如果您有 curl v7.19.0 或更高版本,則有
--remote-name-all, 以避免重復-O。-L并且-J只需要給予一次。如果沒有,你可以使用
make-url-list | sed 's/^/-O /' | xargs curl -JL如果您有
wget,它具有與-Jand-O、 in--content-disposition和類似的選項,這些選項--trust-server-names適用于所有給定的 URL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359242.html
