Force wget to use actual filename

When using wget in a script to download some files from Google Docs, the name of the file is not preserved. For example:

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

saves the file as pub?key=pyj6tScZqmEfbZyl0qjbiRQ instead of indicatorhivestimatedprevalence15-49.xls, which is what I get if I click on the link in a browser. Is there any way to enforce this "browser-like" behaviour in wget?


Solution 1:

wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

will do the trick for you.

Its still not fully implemented and seems to bug out a bit sometimes so its not the default option in wget, use it at your own risk.

Solution 2:

You can try to use curl to download and keep original filename:

curl -OJL ${your_url}
  • -O for remote-name
  • -J for remote-header-name
  • -L for location

see curl command line options.