如何使用curl或wget将文件下载到目录中?

时间:2013-10-17 01:17:11

标签: linux macos 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

4 个答案:

答案 0 :(得分:49)

以下行会将所有文件下载到您提到的目录中。

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

此处文件将下载到/home/test目录

答案 1 :(得分:14)

我知道这是一个古老的问题,但你可以用curl做你想要的事情

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

首先,如果这是脚本,你需要确保文件是否已经删除然后删除目录然后卷曲下载,否则curl将失败,文件和目录已经存在错误。

答案 2 :(得分:3)

最简单的方法是在子shell中cd

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

你可以把它变成一个shell函数(例如在你的~/.bashrc中)

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

然后输入wgetinside somedir http://example.com/file.zip

答案 3 :(得分:1)

简短回答不是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

第一个我将你的url(example.com/file.zip)定义为一个变量。 f = part删除了URL并离开/file.zip,然后将该文件($ i)卷曲到目录(〜)作为文件名。