55

我知道我可以使用以下 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

4 回答 4

55

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

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

这里的文件将被下载到/home/test目录

于 2013-10-31T17:31:30.173 回答
14

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

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

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

于 2016-06-19T21:41:03.077 回答
6

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

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

你可以让它成为一个shell函数(例如在你的~/.bashrc

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

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

于 2013-10-17T05:00:36.413 回答
3

简短的回答是否定的,因为 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= 部分删除了 URL 并留下 /file.zip,然后将该文件 ($i) 作为文件名卷曲到目录 (~) 中。

于 2013-10-17T02:02:50.313 回答