web-dev-qa-db-ja.com

curlまたはwgetを使用してファイルをディレクトリにダウンロードする方法は?

次の2つのコマンドを使用してファイルをダウンロードできることを知っています。

curl -O example.com/file.Zip
wget example.com/file.Zip

しかし、特定のディレクトリに移動してほしい。だから私は次のことができます:

curl -o mydir/file.Zip example.com/file.Zip
wget -O mydir/file.Zip example.com/file.Zip

ファイル名を指定する必要がない方法はありますか?このようなもの:

curl -dir mydir example.com/file.Zip
44
at.

次の行は、すべてのファイルを指定されたディレクトリにダウンロードします。

wget -P /home/test www.xyz.com

ここで、ファイルは/home/testディレクトリにダウンロードされます

50
Kishan

私はこれが古い質問であることを知っていますが、あなたがcurlで尋ねたことをすることは可能です

rm directory/somefile.Zip
rmdir directory
mkdir directory
curl --http1.1 http://example.com/somefile.Zip --output directory/somefile.Zip

これがスクリプト化された場合、まず、ファイルが既に存在する場合は削除することを確認してからディレクトリを削除し、ダウンロードをカールする必要があります。

15
mewasthere

最も簡単な方法は、サブシェル内でcdすることです

  (cd somedir; wget example.com/file.Zip)

それをシェル関数にすることができます(たとえば、~/.bashrcで)

  wgetinside() {
    ( cd $1 ; shift; wget $* )
  }

次にwgetinside somedir http://example.com/file.Zipと入力します

Curlとwgetは自動的にSTDOUTに書き込むので、短い答えはノーです。ダウンロードファイルをディレクトリに配置するオプションは組み込まれていません。

-o/--output <file> Write output to <file> instead of stdout (Curl)

-O,  --output-document=FILE    write documents to FILE. (WGet)

しかし、ネイティブにSTDOUTに出力するため、次のようなプログラム的なソリューションを提供します。

 i="YOURURL"; f=$(awk -F'/' '{print $NF}' <<< $i);curl $i > ~/$f

最初のiは、URL(example.com/file.Zip)を変数として定義します。 f =部分はURLを削除して/file.Zipを残し、そのファイル($ i)をファイル名としてディレクトリ(〜)にカールします。

1
MattSizzle