題 重定向時如何使用正確的名稱wget文件?


因此,經過一段時間搜索谷歌和超級用戶(以及掃描手冊頁)後,我無法找到(我認為)應該簡單的事情的答案:

如果你去這裡:

http://www.vim.org/scripts/script.php?script_id=2340

並嘗試下載主題:

http://www.vim.org/scripts/download_script.php?src_id=9750

像這樣:

wget http://www.vim.org/scripts/download_script.php?src_id=9750

你最終可能會得到一個名為的文件 download_script.php?src_id=9750

但我希望它被稱為 molokai.vim,如果我使用瀏覽器下載此文件會發生什麼。

我需要為wget指定哪些選項以獲得所需效果?

我也可以使用Curl等效命令。


95
2018-06-23 11:44


起源




答案:


-O file
--output-document=file

文檔不會寫入相應的文件,但所有文件將連接在一起並寫入文件。          如果 - 用作文件,文檔將打印到標準輸出,禁用鏈接轉換。 (使用 ./- 打印到一個字面命名的文件 -.

所以,

wget -O somefile.extension http://www.vim.org/scripts/download_script.php?src_id=9750

或者你也許能得到 wget 如果你的版本支持,使用--content-disposition選項來解決這個問題。

wget --content-disposition http://www.vim.org/scripts/download_script.php?src_id=9750

根據手冊頁的注意事項,

--content-disposition

如果將其設置為on,則啟用對“Content-Disposition”標頭的實驗性(非完全功能)支持。這可能導致服務器額外往返“HEAD”請求,並且已知會遇到一些錯誤,這就是默認情況下當前未啟用的原因。

此選項對於某些文件下載CGI程序非常有用,這些程序使用“Content-Disposition”標頭來描述下載文件的名稱應該是什麼。

您可以使用相同的自動行為 curl,使用,

curl -JLO http://www.vim.org/scripts/download_script.php?src_id=9750

-O 使用遠程名稱,和 -J 迫使 -O 從內容處置標頭而不是URL獲取該名稱,以及 -L 如果需要,可以遵循重定向。


142
2018-06-23 12:03



我應該指出這需要自動化 - audio.zoom
據我了解,如果URL指向文件並且需要使用內容處置標頭保存不同的內容,wget依賴於網頁正確地通知它,wget可能會或可能不完全支持。所以你不能用wget自動完成它。 Curl可能或多或少取決於網頁的成功。 - EightBitTony
關鍵是能夠編寫腳本這些東西而無需複雜的解析,捲曲很好,但到目前為止我還沒有能夠收集到那麼好的選項 - audio.zoom
啊哈 - 我錯了,看到更新的答案。這就是為什麼stackexchange網站運作良好 - 每個人都能學到一些東西,甚至是回答問題的人! - EightBitTony
這對我來說對於stackexchange播客很有用,它一直困擾著我。謝謝。 - Richard Campbell


使用wget,您可以這樣做:

wget --trust-server-names <url> 

使用服務器為您提供的最後一個文件名保存文件。


69
2018-06-29 05:08



我想知道它們之間有什麼區別 --trust-server-names 和 --content-disposition - JamesTheAwesomeDude
好像 --trust-server-names 跟隨重定向到不同的文件,和 --content-disposition 使用響應標頭中指定的名稱命名文件,而不需要任何重定向。 - Asfand Qazi
為什麼不是這個默認功能?!?! - hopeseekr
@hopeseekr服務器可能很頑皮並且如果你沒有仔細觀察就調用.bashrc文件。 lists.gnu.org/archive/html/bug-wget/2012-04/msg00059.html - Patrick Conheady


你也可以使用 aria2c  - 它似乎與Content-Disposition標頭很好地配合。


2
2018-01-24 03:32





只是fyi捲曲重定向很好,所以使用以下應該工作, 我認為,為你所尋找的。

捲曲-o molokai.vim http://www.vim.org/scripts/download_script.php?src_id=9750


0
2018-06-23 12:39





工作如下:

捲曲-o molokai.vim http://www.vim.org/scripts/download_script.php?src_id=9750

wget -O somefile.extension http://www.vim.org/scripts/download_script.php?src_id=9750

(將case更改為較小,即(wget -O)更改為(wget -o)


0
2018-02-15 06:44