How to wget a file with correct name when redirected?
-O file
--output-document=file
The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If
-
is used as file, documents will be printed to standard output, disabling link conversion. (Use./-
to print to a file literally named-.
)
So,
wget -O somefile.extension 'http://www.vim.org/scripts/download_script.php?src_id=9750'
Or, you may be able to get wget
to automatically use the filename proposed by the server using the --content-disposition
option if supported by your version.
wget --content-disposition 'http://www.vim.org/scripts/download_script.php?src_id=9750'
Caveats as per the man page,
--content-disposition
If this is set to on, experimental (not fully-functional) support for "Content-Disposition" headers is enabled. This can currently result in extra round-trips to the server for a "HEAD" request, and is known to suffer from a few bugs, which is why it is not currently enabled by default.
This option is useful for some file-downloading CGI programs that use "Content-Disposition" headers to describe what the name of a downloaded file should be.
You can achieve the same automated behavior with curl
, using,
curl -JLO 'http://www.vim.org/scripts/download_script.php?src_id=9750'
-O
uses the remote name, and -J
forces the -O
to get that name from the content-disposition header rather than the URL, and -L
follows redirects if needed.
With wget you can do this:
wget --trust-server-names <url>
to save the file using the last file name the server gives you.
You could also use aria2c - it seems to work nicely with the Content-Disposition headers.