Wget

如何使用 wget 獲取具有特定名稱的文件?

  • October 18, 2017

我在 Amazon Linux 上使用 bash。

當我在瀏覽器中訪問以下 URL https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US時,我得到一個文件 firefox-56.0.1.tar.bz2。但是,當我使用 wget 時,下載的文件的標題中有一個“index.html”,即使它看起來像同一個文件。所以我嘗試了

wget -r --no-parent --reject "index.html*" -nH --cut-dirs=7 "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"

但現在沒有文件被下載。如何使用 wget(或其他一些命令行工具)下載文件並讓文件的標題與我在瀏覽器中訪問該 URL 時的標題相同?

在這種情況下,您希望信任在標頭中發送的伺服器名稱,沒有該指令wget將使用 URL 中的文件名…

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" --trust-server-names

當然,為此,所有伺服器都需要為正在發送/生成的任何文件發送文件名。有些腳本不這樣做 - 如果是這種情況,您仍然會得到實際上是文件的“index.html”。

在這種情況下,您要做的是使用-O輸出選項,並在最後指定所需的文件名

wget "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US" -O latest-firefox.tar.bz2

當然,您需要知道它是什麼文件類型等才能使這部分工作。

引用自:https://unix.stackexchange.com/questions/398910