Curl to grab remote filename after following location
The remote side sends the filename using the Content-Disposition header.
curl 7.21.2 or newer does this automatically if you specify --remote-header-name
/ -J
.
curl -O -J -L $url
If you have a recent version of curl
(7.21.2 or later), see @jmanning2k's answer.
I you have an older version of curl
(like 7.19.7 which came with Snow Leopard), do two requests: a HEAD
to get the file name from response header, then a 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
If you can use wget
instead of curl
:
wget --content-disposition $url