Help us understand the problem. What is going on with this article?

cURL のワンライナーで複数ファイルを同時に指定する(複数URL個別指定)

https://hoge.com/fuga.txt https://piyo.com/hogera.txt を1つの curl コマンドでダウンロードしたい。

TL;DR(複数の個別URLを同時に指定)

-O オプションを各々付けて繋げて記載する。(ロングオプション名:--remote-name

ファイル名を指定して保存したい場合は -o オプションを各々つけて記載する。(ロングオプション名:--output

ファイル名をそのまま保存する場合
curl -O https://hoge.com/fuga.txt -O https://piyo.com/hogera.txt
ファイル名を指定して保存する場合
curl -o foo.txt https://hoge.com/fuga.txt -o bar.txt https://piyo.com/hogera.txt
ロングオプションでファイル名をそのまま保存する場合
curl --remote-name https://hoge.com/fuga.txt \
     --remote-name https://piyo.com/hogera.txt
ロングオプションでファイル名を指定して保存する場合
curl --output foo.txt https://hoge.com/fuga.txt  \
     --output bar.txt https://piyo.com/hogera.txt 
URLもロングオプションで指定するタイプ
curl --location https://hoge.com/fuga.txt --output foo.txt \
     --location https://piyo.com/hogera.txt --output bar.txt 

参考文献

TS;DR

GitHub 上のリリース・ファイルと、その署名や公開鍵など、複数ファイルの個別ダウンロードが面倒になりました同時指定によるダウンロードがシェル操作で必要になりました。できることならワンライナーでコピペピピックしたかったのです。

シェルのデータ転送の王道コマンドラインツールと言えば「wget」と「cURL」です。

いつも使っている wget は機能が豊富で、かゆいところにも手が届くのですが、macOS には wget は標準で入っていません。まっさらな環境でのダウンロードを想定しているため curl を使うことにしました。

curl のマニュアル(man curl)を読むと「URL は好きなだけ記述できます」と書いてあります。

man␣curl
-O, --remote-name
    (中略)
    You may use this option as many times as the number of URLs you have.

そこで以下のようにしてみたのですが、うまく動きませんでした。

curl -O https://hoge.com/fuga.txt https://piyo.com/hogera.txt

いま思えば「use this option as many times as the number of URLs」とあるので、「このオプションを URL の数だけ使え」ということなのですが、検索猿人なため深く考えずに調べに行ってしまいました。

site:qiita.com curl 複数ファイル ダウンロード」と Qiita 記事に絞ってググってみたのですが、シェル・スクリプトに1つ1つ記入したり、ダウンロード一覧のファイルを別途用意したり、パイプ渡しするものはあれど、同じコマンド行に併記する情報がなかなか見つかりません

そこで Qiita 以外のサイトを検索したら、ドンピシャな英語の記事が。

3. Download Multiple Files
Use following command to download files from multiple files from multiple remote servers using HTTP protocol. The following example will download latest.tar.gz and latest.zip from remote servers and save in current directory with same names.

(筆者訳)
3. 複数ファイルのダウンロード
次のコマンドを使えば、HTTP プロトコルを使用して、複数のリモートサーバーや複数のファイルをダウンロードできます。次の使用例はリモートサーバーから latest.tar.gzlatest.zip をダウンロードし、現在のディレクトリに同じ名前で保存します。

curl -O http://wordpress.org/latest.tar.gz -O http://wordpress.org/latest.zip

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                      Dload  Upload   Total   Spent    Left  Speed
100   178  100   178    0    0    202      0 --:--:-- --:--:-- --:--:--   202
100   178  100   178    0    0    387      0 --:--:-- --:--:-- --:--:--   387

Oh ...

併せて読みたい

  • -o(小文字のオー)オプションでも複数ダウンロード可能です。
KEINOS
A Japanese made in Mexico with Mexican quality ;-) Who monkey around the jungle of codes.記事の日本語がおかしかったら遠慮なく編集リクください。また、記事に「LGTM」が付くたび、なるべく何かしら加筆・修正してブラッシュアップしています。基本的に変更通知はお送りしません。
https://blog.keinos.com/
qiitadon
Qiitadon(β)から生まれた Qiita ユーザー・コミュニティです。
https://qiitadon.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした