2014-10-06 34 views
0

我想從某個網址下載最新的軟件源代碼(WRF),然後自動執行安裝過程。樣本網址,如下所示給出: -如何使用wget從相同的URL下載最新版本的軟件

http://www2.mmm.ucar.edu/wrf/src/WRFV3.6.1.TAR.gz

在上面的網址,版本號可以在開發者版本後更改不時新版本。現在我想從主腳本下載最新的可用版本。我嘗試了以下內容: -

wget -k -l 0 "http://www2.mmm.ucar.edu/wrf/src/" -O index.html ; cat index.html | grep -o 'http:[^"]*.gz' | grep 'WRFV' 

通過上面的代碼,我可以提取所有可用的軟件版本。上述代碼的輸出是如下: -

http://www2.mmm.ucar.edu/wrf/src/WRFV2.0.3.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV2.1.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV2.1.2.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV2.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV2.2.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV2.2.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.0.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.0.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.1.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.2.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.2.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.3.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.3.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.4.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.4.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.5.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.5.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.6.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Chem-3.6.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3-Var-do-not-use.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.0.1.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.0.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.1.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.2.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.2.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.2.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.3.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.3.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.4.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.4.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.5.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.5.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.6.1.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.6.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3.TAR.gz 
http://www2.mmm.ucar.edu/wrf/src/WRFV3_OVERLAY_3.0.1.1.TAR.gz 

但是,我無法去進一步從鏈接過濾出更高版本。

+0

'sort -V | tail -n 1' – tripleee 2014-10-06 14:45:03

+0

'wget -k -l 0「http://www2.mmm.ucar.edu/wrf/src/」-O index.html; cat index.html | grep -o'http:[^「] *。gz'| grep'WRFV'| sort -V | tail -n 1'會導致排序不同的文件,它給了我'http://www2.mmm.ucar.edu/wrf/src/WRFV3_OVERLAY_3.0.1.1.TAR.gz'這不是我想要的,而是我期望'http:// www2.mmm.ucar.edu/wrf/src/WRFV3.6.1.TAR.gz' – 2014-10-06 14:52:23

+0

它需要智能,對於正則表達式來說不是一個好工作,你需要有一個腳本並且不時地維護它 – HuStmpHrrr 2014-10-06 15:03:44

回答

0

通常,用於處理HTML的網頁我recommendig一些Perl工具,但因爲這是一個目錄索引輸出,(可能)可以通過bash的工具來完成像grepsed和這樣...

下面的代碼被分爲幾個較小的bash功能,對於簡單的更改

#!/bin/bash 

#getdata - should output html source of the page 
getdata() { 
    #use wget with output to stdout or curl or fetch 
    curl -s "http://www2.mmm.ucar.edu/wrf/src/" 
    #cat index.html 
} 

#filer_rows - get the filename and the date columns 
filter_rows() { 
    sed -n 's:<tr><td.*href="\([^"]*\)">.*>\([0-9].*\)</td>.*</td>.*</td></tr>:\[email protected]\1:p' | grep "${1:-.}" 
} 

#sort_by_date - probably don't need comment... sorts the lines by date... ;) 
sort_by_date() { 
    while [email protected] read -r date file 
    do 
     echo "$(date --date="$date" +%s)@$file" 
    done | sort -gr 
} 

#MAIN 
file=$(getdata | filter_rows WRFV | sort_by_date | head -1 | cut [email protected] -f2) 
echo "You want download: $file" 

打印

You want download: WRFV3-Chem-3.6.1.TAR.gz 
0

增加一個數字排序最前的行什麼:

wget -k -l 0 "http://www2.mmm.ucar.edu/wrf/src/" -O index.html ; cat index.html | grep -o 'http:[^"]*.gz' | grep 'WRFV[0-9]*[0-9]\.[0-9]' | sort -r -n | head -1 
+0

它很容易中斷,如果維護者發佈一個名爲'WRFV4.TAR.gz'的新版本會怎麼樣? ? – HuStmpHrrr 2014-10-06 15:05:36

+0

這就是屏幕抓取的問題,你在網站更新的擺佈。 – 2014-10-06 15:10:39

相關問題