Ubuntu 上的 wget 或任何其他 http 檔案下載器是否支援萬用字元?

Ubuntu 上的 wget 或任何其他 http 檔案下載器是否支援萬用字元?

我希望能夠編寫一個 bash 腳本來自動更新我的 MediaWiki 擴展,並且我想我會使用這個網站https://extdist.wmflabs.org/dist/extensions/這樣做。但正如您所看到的,每個 tarball 檔案名稱在最後的破折號 (-) 後面都有一個隨機的(或在我看來是這樣的)字母和數字的組合。所以我想要的是某種只下載具有此類名稱的檔案的方法,extname-REL1_25*.tar.gz其中 * 是名稱中通配符出現的位置,extname指的是我想要的擴展名的名稱。

答案1

wget 大括號擴展

將大括號擴充與 wget 結合使用可根據模式下載多個檔案。

例子:

wget -c https://extdist.wmflabs.org/dist/extensions/GoogleDocTag-REL1_{22-45203b7,23-249c6f2,24-3186a71,25-10e101f}.tar.gz

-c 如果下載從停止的同一點暫停或中斷,則可選標誌會繼續下載。-c當您下載大量文件並且希望不間斷地批量下載所有文件時,該選項非常有用。

wget 從清單中下載多個文件

例子:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -E -H -k -K -p -e robots=off -i ./list.txt    

wget 遞歸接受/拒絕選項

遞歸接受/拒絕選項
    -A acclist --接受 acclist
    -R 拒絕列表 --拒絕拒絕列表
        指定以逗號分隔的檔案名稱後綴或模式列表
        接受或拒絕。請注意,如果有任何通配符 *、
        ?、[ 或 ],出現在 acclist 或 rejlist 的元素中,將會是
        被視為模式,而不是後綴。在這種情況下,你
        必須將模式括在引號中以防止您的 shell
        擴大它,就像-A“*.mp3”或者-A '*.mp3'

例子:

lynx -dump "https://extdist.wmflabs.org/dist/skins/" | awk '/http/{print $2}' | uniq >> list.txt  
wget -c -A "Vector*.tar.gz" -E -H -k -K -p -e robots=off -i ./list.txt  

和選項都會下載所有文件,然後接受和拒絕選項會刪除與模式不匹配的下載文件-A-R這是極其低效的。更快的方法是在下載任何內容之前對 list.txt 檔案進行模式匹配,以從 list.txt 中刪除所有不需要的檔案。

假設您要從以下位置下載所有文件https://extdist.wmflabs.org/dist/extensions/滿足以下條件:

  • 1.25版本
  • 僅選定的 MediaWiki 擴展

假設您已經建立了一個 list.txt 文件,其中包含以下所有連結https://extdist.wmflabs.org/dist/extensions/,您在支援模式匹配的文字編輯器中開啟 list.txt 並過濾 list.txt 的內容以匹配具有該字串的行1_25(指版本 1.25),然後過濾這些結果以匹配具有 ~20 副檔名的行(數字20 並不重要)您要下載的。然後將結果寫入一個名為 new-list.txt 的新檔案(檔案名稱 new-list.txt 並不重要),並在 wget-i選項後使用new-list.txt 下載多個檔案(在本例中數量約20 個)從本機或外部文件讀取 URL。

此方法的進一步改進是透過過濾 list.txt 的內容來匹配包含與您要查找的多個擴展名相符的字串的副檔名,從而減少要匹配的副檔名的數量。例如,如果字串wiki與您要尋找的多個副檔名匹配,您可以過濾 list.txt 的內容以進行匹配wiki並節省一點時間。在https://extdist.wmflabs.org/dist/extensions/有五個連結同時包含1_25wiki,您可以找到所有五個連結都具有兩個模式匹配。

答案2

不,使用通配符是不可能的。但在這種情況下,wget 將使用遞歸下載 -https://unix.stackexchange.com/questions/25340/download-recursively-with-wget

相關內容