使用curl命令将文件保存到特定文件夹

Ziy*_*gov 163 directory bash shell curl

在shell脚本中,我想从某个URL下载文件并将其保存到特定文件夹.使用该curl命令将文件下载到特定文件夹时必须使用的具体选项是什么,或者我如何获得该效果?

小智 248

我不认为你可以提供卷曲的路径,但你可以CD到位置,下载和CD回来.

cd target/path && { curl -O URL ; cd -; }
Run Code Online (Sandbox Code Playgroud)

或使用子shell.

(cd target/path && curl -O URL)
Run Code Online (Sandbox Code Playgroud)

如果路径存在,则两种方式都只会下载.-O保留远程文件名.下载后,它将返回原始位置.

如果需要明确设置文件名,可以使用小-o选项:

curl -o target/path/filename URL
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用子shell,如下所示:`(cd target/path; curl -O URL)` (8认同)
  • 两者有什么区别?第一个cd进入目录并下载文件,然后cds out.第二个保留在当前目录中并将文件卷曲到指定位置.第二个似乎更简单. (8认同)
  • @HenryZhu在第一个文件名中,文件名是从服务器上文件的名称派生的.在第二步中,您将所下载的内容重命名为您提供的名称. (8认同)
  • 我有这个命令: curl -LOk `basename /packages` "http://github.com/ziyaddin/xampp/archive/master.zip"。但它说错误的文件名 --> `basename /packages` (2认同)
  • 我真的想要一个指定目录的选项,但是使用服务器的文件名.似乎使用`cd`是目前最好的选择,虽然看起来有点不优雅. (2认同)
  • 如果您在脚本中,您可以执行以下操作: `for url in $(cat urllistFile ) ; 名称 = $(基本名称 $url) ; 卷曲 -o [yourDir]/$name $url ; 完成` (2认同)

ode*_*bas 33

此选项来自 curl 7.73.0

curl --create-dirs -O --output-dir /tmp/receipes https://example.com/pancakes.jpg
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这些选项不适用于 Ubuntu,因为 7.73.0 版本尚未适用于 ubuntu :( (4认同)
  • 它在带有curl 7.81.0的Ubuntu 22.04上运行良好 (4认同)
  • 虽然仍然无法在 Ubuntu 上运行 - 遗憾的是,curl 版本是 7.68.0 for 20.04 LTS - 我可以确认它可以在 OSX Monterey 上运行,所以值得投票 (2认同)

wis*_*cky 22

curl没有选项(不指定文件名),但wget有。目录可以是相对的或绝对的。此外,如果该目录不存在,则会自动创建该目录。

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"
Run Code Online (Sandbox Code Playgroud)


小智 12

这个对我有用:

curl http://centos.mirror.constant.com/8-stream/isos/aarch64/CentOS-Stream-8-aarch64-20210916-boot.iso --output ~/Downloads/centos.iso 
Run Code Online (Sandbox Code Playgroud)

在哪里:

--output允许我设置我想要放置的文件和扩展文件的路径和命名。


F1L*_*nux 9

使用重定向:

这可以将curl下载的文件放入指定路径:

curl https://download.test.com/test.zip > /tmp/test.zip
Run Code Online (Sandbox Code Playgroud)

显然,“ test.zip ”是您想要标记重定向文件的任意名称 - 可以是相同的名称或不同的名称。

我实际上更喜欢@oderibas解决方案,但这将使您解决这个问题,直到您的发行版支持curl版本7.73.0或更高版本 -


Jer*_*yal 5

对于Windows中的powershell,您可以添加相对路径+文件名--output标记:

curl -L  http://github.com/GorvGoyl/Notion-Boost-browser-extension/archive/master.zip --output build_firefox/master-repo.zip
Run Code Online (Sandbox Code Playgroud)

这里build_firefox是相对文件夹。