web-dev-qa-db-ja.com

curlコマンドでダウンロード可能なファイルサイズを取得する方法

シェルスクリプトで、curlコマンドを使用して「url」からファイルをダウンロードする必要があるなどの要件があります。そのファイルをダウンロードする前に、メソッドで同じファイルサイズを処理したいと思います。

誰かがこれを手伝ってくれる?

5
Santhosh

使用 -Iオプションを使用してヘッダーのみを取得し、「Content-Length」ヘッダーを探します。 -Lリダイレクトに従う必要がある場合はオプション。例えば:

$ curl -L -I https://cdimage.debian.org/debian-cd/current/AMD64/iso-cd/debian-9.4.0-AMD64-netinst.iso
HTTP/1.1 302 Found
Date: Mon, 18 Jun 2018 09:51:32 GMT
Server: Apache/2.4.29 (Unix)
Location: https://gensho.ftp.acc.umu.se/debian-cd/current/AMD64/iso-cd/debian-9.4.0-AMD64-netinst.iso
Cache-Control: max-age=300
Expires: Mon, 18 Jun 2018 09:56:32 GMT
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 200 OK
Date: Mon, 18 Jun 2018 09:51:32 GMT
Server: Apache/2.4.29 (Unix)
Last-Modified: Sat, 10 Mar 2018 11:56:52 GMT
Accept-Ranges: bytes
Content-Length: 305135616
Age: 228
Content-Type: application/x-iso9660-image

これは、ファイルのサイズが305,135,616バイトであることを示しています。

たとえば、Gawkを使用してこれをフィルタリングできます。

$ curl -s -L -I https://cdimage.debian.org/debian-cd/current/AMD64/iso-cd/debian-9.4.0-AMD64-netinst.iso | gawk -v IGNORECASE=1 '/^Content-Length/ { print $2 }'
305135616

-sオプションは、進行状況情報を出力しないようにcurlに指示します。デフォルトでは、出力がリダイレクトされるときに出力されます。)

この情報は常に利用できるとは限らないため、スクリプトはそれに対応できるように準備しておく必要があります。

10
Stephen Kitt