当使用curl下载文件时,如何跟踪链接位置并将其用于输出文件名(不提前知道远程文件名)?
例如,如果点击下面的链接,您将下载一个文件名为“pythoncomplete.vim”。但是,使用curl的-O和-L选项,文件名只是原来的remote-name,一个笨拙的“download_script.PHP?src_id = 10872”。
curl -O -L http://www.vim.org/scripts/download_script.PHP?src_id=10872
curl -o pythoncomplete.vim -L http://www.vim.org/scripts/download_script.PHP?src_id=10872
如果您有最新版本的curl(7.21.2或更高版本),请参阅
@jmanning2k’s answer。
我有一个旧版本的curl(像7.19.7与雪豹),做两个请求:一个HEAD从响应头获取文件名,然后一个GET:
url="http://www.vim.org/scripts/download_script.PHP?src_id=10872" filename=$(curl -sI $url | grep -o -E 'filename=.*$' | sed -e 's/filename=//') curl -o $filename -L $url