2016-10-21 23 views
0

ブラウザにURL(http://192.168.150.41:8080/filereport/31779/json/)を入力すると、自動的にファイルが31779_report.jsonとしてダウンロードされます。cURLダウンロードファイルの問題

私はcurlを使用してファイルをダウンロードしようとしていますが、次のエラーが表示されます。 「-L」スイッチを使用する場合

$ curl -O http://192.168.150.41:8080/filereport/31779/json/ 
curl: Remote file name has no length! 
curl: try 'curl --help' or 'curl --manual' for more information 

、私はJSONコンテンツが表示されますが、ファイルが保存されません取得します。

$curl -L http://192.168.150.41:8080/filereport/31779/json/ 

{ 

..... 
..... 

} 

cURL/wgetを使用して正確なファイル "31779_report.json"をダウンロードするにはどうすればよいですか?

コンテンツをファイル(31779_report.json)に手動でリダイレクトする(>)ことは望ましくありません。

お願いします。

答えて

1

curlの-Oフラグは、ファイルのリモート名を使用しようとしますが、URLスキーマがファイル名で終わらないため、これはできません。 -oフラグ(小文字のoが)ので、同じようSTDOUTをリダイレクトせずに手動でファイル名を指定するために使用することができます。

curl <address> -o filename.json 

あなたは手動でawkを使用したいファイル名の形式を構築することができます。例:

URL=http://192.168.150.41:8080/filereport/31779/json/ 
file_number=$(echo $URL | awk -F/ '{print $(NF-2)}') 
file_name="${file_number}_report.json" 
curl -L "$URL" -o "$file_name" 

+0

おかげさまで、私はOスイッチを使って投稿した上記の質問を読んで、それは私にいくつかのエラーを投げ、また、私はコンテンツをファイルにリダイレクトしたくない。 – Arun

+0

ああ、おっしゃる、あまりにも多くのスキミングのために私の悪い。私は私の答えを更新します。 –

+1

@Arunが答えを更新しました。 –