私はこの構文でcurlを使用しています:
curl -o myfile.jpg http://mysite.com/myfile.jpg
このコマンドを2回実行すると、2つのファイルが取得されます。
myfile.jpg
myfile-1.jpg
ファイルが存在する場合、上書きするようにCURLに指示するにはどうすればよいですか?
私はこの構文でcurlを使用しています:
curl -o myfile.jpg http://mysite.com/myfile.jpg
このコマンドを2回実行すると、2つのファイルが取得されます。
myfile.jpg
myfile-1.jpg
ファイルが存在する場合、上書きするようにCURLに指示するにはどうすればよいですか?
回答:
使用する:
curl http://mysite.com/myfile.jpg > myfile.jpg
noclobberオプションが有効になっていないことを確認してください(set +o noclobber)。
私は同じ問題に遭遇し、サーバー側が与えるものは何でも同じファイル名を再利用したいのですが、あなたの場合、ファイル名は basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
次に、次のようなヘルパーbash関数を記述できます。
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
しかし、私の場合、ファイル名はURLの一部でもなく、content-dispositionが付属しています。カールでコマンドラインは
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
-fSLサーバー側が302リダイレクションを提供する場合は、それが処理するものを無視できます。-Rサーバ側のタイムスタンプのために、-Jサーバ側を考慮するContent-Dispositionと、-O代わりに端末にダンプのダウンロード動作に切り替えること。
ただし、ファイル名が存在する場合は、上書きを拒否されます。サーバー側のLast-Modifiedタイムスタンプが新しい場合は上書きしたいのですが。
最終的には、それが可能なwgetソリューションになります。
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
これ-Nは、サーバー側のtiemstampをチェックして、サーバー側に新しいバージョンがある場合にのみ上書きすることです。ヘッダー--content-dispositionを検討することContent-Dispositionです。wgetのデフォルトの動作は、サーバー側から指定されたファイル名にダウンロードすることです。
あなたの場合、タイムスタンプを気にしないのであれば、それはただです
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curlシステムのどのバージョンですか?