使用curl下载文件时如何保留远程文件名

时间:2011-09-16 23:19:51

标签: shell scripting curl

  

可能重复:
  How do I save a file using the response header filename with cURL

我需要以

格式下载数千张图片

http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0

如果您在浏览器中粘贴该链接,它会尝试下载名为1.jp2

的文件

我想用curl做同样的事情。但是,当我跑

curl -I'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0'

文件名报告为404.txt,您可以下载并查看它实际上是我想要的文件。我不能使用-O选项,因为分配给该文件的名称不好,我有技术原因需要系统上使用的实际名称。

如何让curl下载相同的文件我在浏览器中检索时没有问题?感谢。

2 个答案:

答案 0 :(得分:70)

解决方案是使用-O -J

-O, --remote-name          Write output to a file named as the remote file  
-J, --remote-header-name   Use the header-provided filename

因此...

curl  -O -J  'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=0'

我不得不升级我的CURL。我有7.19不支持-J但7.22(这是最新的)。

答案 1 :(得分:-2)

你可以使用-o选项吗?例如

 curl  'http://oregondigital.org/cgi-bin/showfile.exe?CISOROOT=/baseball&CISOPTR=[0-9]' -o "#1.jpg"