Curl to grab remote filename after following location Curl to grab remote filename after following location unix unix

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