[解決済み] cat の出力を cURL にパイプし、ファイルのリストをダウンロードする
質問
というファイルに、URL のリストを書いています。
urls.txt
. 各行には1つのURLが含まれています。 私はcURLを使用して一度にすべてのファイルをダウンロードしたいです。 正しいワンライナーを書き下すことができないようです。
試してみました。
$ cat urls.txt | xargs -0 curl -O
しかし、これではリストの最後のファイルしか得られません。
どのように解決するのですか?
これは私のために動作します。
$ xargs -n 1 curl -O < urls.txt
私はFreeBSDを使用しています。 あなたのxargsは違う動作をするかもしれません。
これはシーケンシャルに実行されることに注意してください
curl
を順次実行していることに注意してください。これは不必要に重いと思われるかもしれません。もし、そのオーバーヘッドを少しでも節約したいのであれば、bashで以下のようにするとうまくいくかもしれません。
$ mapfile -t urls < urls.txt
$ curl ${urls[@]/#/-O }
これはURLリストを配列に保存し、その配列をオプションで拡張して
curl
というオプションで拡張し、ターゲットをダウンロードさせます。このとき
curl
コマンドは複数の URL を受け取り、既存の接続を再利用してそれらすべてを取得することができます (HTTP/1.1) が、そのためには
-O
オプションが必要です。
ダウンロードと保存
を実行します。URL ]内の文字は、シェルとの相互作用を避けるためにエスケープする必要がある場合があることに注意してください。
あるいは、bashではなくPOSIXシェルを使用している場合。
$ curl $(printf ' -O %s' $(cat urls.txt))
これは
printf
は、データ引数のリストを使い切るためにフォーマットパターンを繰り返すという挙動に依存しています。
printf
はこれを行います。
この非xargsメソッドは、非常に大きなURLのリストに対してシステムの制限にぶつかる可能性があることに注意してください。研究 ARG_MAX と MAX_ARG_STRLEN を追加してください。
関連
-
[解決済み] 新しい鍵を作成せずに、SSH鍵のパスフレーズを削除するにはどうすればよいですか?
-
[解決済み] cURLの出力をファイルに取り込むには?
-
[解決済み] cURL を使ってファイル付き POST データをアップロードする
-
[解決済み] Googleドライブから大きなファイルをwget/curlする
-
[解決済み】findコマンドで返されたファイルのリストをcatにパイプし、すべてのファイルを表示させる方法
-
[解決済み】URLからbashスクリプトを実行する。
-
[解決済み] Unixでtarコマンドの出力をオフにするにはどうしたらいいですか?[クローズド]です。
-
[解決済み] findコマンドでファイルサイズをファイル名と一緒に出力するにはどうしたらいいですか?
-
[解決済み] CSVファイルをsortコマンドで列の優先順位で並べ替える
-
[解決済み] UNIXにおけるNULL文字の識別と削除
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SCP Permission denied (publickey). EC2において、ディレクトリに-rフラグを使用した場合のみ。
-
[解決済み] Vimの^M文字とはどういう意味ですか?
-
[解決済み] PowerShellの*Nix 'which'コマンドに相当するもの?
-
[解決済み] UNIXにおけるwall-clock-time, user-cpu-time, system-cpu-timeとは具体的にどのようなものですか?
-
[解決済み] コマンドライン Unix ASCII ベースのチャート作成/プロットツール
-
[解決済み] JPEGを再圧縮せずにEXIFデータを削除する方法を教えてください。
-
[解決済み] findコマンドでファイルサイズをファイル名と一緒に出力するにはどうしたらいいですか?
-
[解決済み] どうしてgrepはそんなに速く動くのですか?
-
[解決済み] シェルスクリプト内の文字列を変数で置換する
-
[解決済み] Unixのセッションとプロセスグループの使い方と意味?