【问题标题】:Save file to specific folder with curl command使用 curl 命令将文件保存到特定文件夹
【发布时间】:2013-04-28 01:30:58
【问题描述】:

在 shell 脚本中,我想从某个 URL 下载文件并将其保存到特定文件夹。我应该使用什么特定的 CLI 标志来使用 curl 命令将文件下载到特定文件夹,或者我如何获得该结果?

【问题讨论】:

  • 看来bash编程就是编程……

标签: bash shell curl directory


【解决方案1】:

我不认为你可以给 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

【讨论】:

  • 我有这个命令:curl -LOk basename /packages "github.com/ziyaddin/xampp/archive/master.zip"。但它说错误的文件名 --> basename /packages
  • 你也可以使用子shell,像这样:(cd target/path; curl -O URL)
  • 两者有什么区别?第一个 cd 进入目录并下载文件,然后 cds 出来。第二个留在当前目录并将文件卷曲到指定位置。第二个似乎更简单。
  • @HenryZhu 在第一个中,文件名来自服务器上的文件名。在第二个中,您将下载的内容重命名为您提供的名称。
  • 我真的想要一个选项来指定一个目录,但使用服务器的文件名。似乎使用cd 是目前最好的选择,虽然它看起来有点不雅。
【解决方案2】:

这个选项comes in curl 7.73.0:

curl --create-dirs -O --output-dir /tmp/receipes https://example.com/pancakes.jpg

【讨论】:

  • 不幸的是,这些选项不适用于 Ubuntu,因为 7.73.0 版还不适用于 ubuntu :(
【解决方案3】:

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

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"

【讨论】:

    【解决方案4】:

    对于windows中的powershell,可以在--outputflag中添加相对路径 + 文件名

    curl -L  http://github.com/GorvGoyl/Notion-Boost-browser-extension/archive/master.zip --output build_firefox/master-repo.zip
    

    这里 build_firefox 是相对文件夹。

    【讨论】:

      【解决方案5】:

      它对我有用:

      curl http://centos.mirror.constant.com/8-stream/isos/aarch64/CentOS-Stream-8-aarch64-20210916-boot.iso --output ~/Downloads/centos.iso 
      

      地点:

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

      【讨论】:

        【解决方案6】:

        这是一个使用 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 中完成工作。

        【讨论】:

          猜你喜欢
          • 2021-06-13
          • 1970-01-01
          • 2014-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多