1. ホーム
  2. unix

[解決済み] Curl でリモートファイル名を取得する場合、次の場所に移動します。

2023-06-20 04:15:37

質問

curl を使用してファイルをダウンロードする場合、どのようにリンクの場所を追跡し、それを出力ファイル名に使用しますか (リモート ファイル名を事前に知ることなく)?

たとえば、以下のリンクをクリックすると、"pythoncomplete.vim." という名前のファイルをダウンロードしますが、curl の -O と -L オプションを使用すると、ファイル名は単に元のリモート名、不器用な "download_script.php?src_id=10872." になります。

curl -O -L http://www.vim.org/scripts/download_script.php?src_id=10872

正しいファイル名でファイルをダウンロードするためには、事前にファイル名を知っておく必要があります。

curl -o pythoncomplete.vim -L http://www.vim.org/scripts/download_script.php?src_id=10872

事前にファイル名を知らなくてもダウンロードできれば素晴らしいのですが、そうでない場合、コマンドラインでリダイレクトされたファイルを素早く引き出す他の方法はないでしょうか?

どのように解決するのですか?

リモート側はContent-Dispositionヘッダを使用してファイル名を送信します。

を指定すると、curl 7.21.2 以降は自動的にこれを行います。 --remote-header-name / -J .

curl -O -J -L $url