【发布时间】:2013-04-28 01:30:58
【问题描述】:
在 shell 脚本中,我想从某个 URL 下载文件并将其保存到特定文件夹。我应该使用什么特定的 CLI 标志来使用 curl 命令将文件下载到特定文件夹,或者我如何获得该结果?
【问题讨论】:
-
看来bash编程就是编程……
在 shell 脚本中,我想从某个 URL 下载文件并将其保存到特定文件夹。我应该使用什么特定的 CLI 标志来使用 curl 命令将文件下载到特定文件夹,或者我如何获得该结果?
【问题讨论】:
我不认为你可以给 curl 的路径,但你可以 CD 到该位置,下载并 CD 回来。
cd target/path && { curl -O URL ; cd -; }
或者使用子shell。
(cd target/path && curl -O URL)
只有当路径存在时,这两种方式才会下载。 -O 保留远程文件名。下载后会回到原来的位置。
如果需要显式设置文件名,可以使用小的-o 选项:
curl -o target/path/filename URL
【讨论】:
basename /packages "github.com/ziyaddin/xampp/archive/master.zip"。但它说错误的文件名 --> basename /packages
(cd target/path; curl -O URL)
cd 是目前最好的选择,虽然它看起来有点不雅。
这个选项comes in curl 7.73.0:
curl --create-dirs -O --output-dir /tmp/receipes https://example.com/pancakes.jpg
【讨论】:
curl 没有这个选项(也没有指定文件名),但wget 有。该目录可以是相对的或绝对的。另外,如果目录不存在,也会自动创建。
wget -P relative/dir "$url"
wget -P /absolute/dir "$url"
【讨论】:
对于windows中的powershell,可以在--outputflag中添加相对路径 + 文件名:
curl -L http://github.com/GorvGoyl/Notion-Boost-browser-extension/archive/master.zip --output build_firefox/master-repo.zip
这里 build_firefox 是相对文件夹。
【讨论】:
它对我有用:
curl http://centos.mirror.constant.com/8-stream/isos/aarch64/CentOS-Stream-8-aarch64-20210916-boot.iso --output ~/Downloads/centos.iso
地点:
--output 允许我设置我想要放置的文件和扩展文件的路径和命名。
【讨论】:
这是一个使用 Batch 从 URL 创建安全文件名并将其保存到名为 tmp/ 的文件夹的示例。我确实认为这在 Windows 或 Linux Curl 版本上不是一个选项很奇怪。
@echo off
set url=%1%
for /r %%f in (%url%) do (
set url=%%~nxf.txt
curl --create-dirs -L -v -o tmp/%%~nxf.txt %url%
)
上面的批处理文件将接受一个输入,一个 URL,并从 url 转换文件名。如果没有指定文件名,它将被保存为 tmp/.txt。因此,它并没有为您完成所有工作,但它可以在 Windows 中完成工作。
【讨论】: