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

可能的复制品:
如何使用 cURL 的响应头文件名保存文件

I need to download many thousands of images in the format

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 下载相同的文件,我在浏览器中检索没有问题? 谢谢。

60216 次浏览

解决方案是使用 -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。我的 v 7.19不支持 -J 但是7.22(最新版本)支持。

你可以使用 -o 选项,可以吗

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