2014-05-04 100 views
0

我有一個文件叫input.txt與我想下載的URL列表。網址最後可能包含查詢參數,我想從輸出文件中刪除它,所以名稱會很漂亮。此外,我有$prefix我想要使用和自動創建目錄,如果它們不存在。wget指定下載的文件名和目錄

我使用的腳本:

cat input.txt | while read line; do 
    wget -P "$prefix" -O `echo $line | sed 's/^.*\///' | sed 's/\?.*$//'` $line 
done 

-P選項有助於指定前綴,更重要的是創建目錄如果他們不存在。但沒有-O選項的文件名將包含醜陋的查詢參數。

-O選項有助於指定文件名。在我的腳本中,我使用sed(url123部分之前的/和查詢參數?之後)切割「壞」部分的URL。唯一的問題是-O選項不會創建目錄(如果它們不存在)。

最後wget不允許同時使用這兩個選項。有沒有解決問題的方法?

+0

東西,一些o/p顯示問題 – PradyJord

+0

你也可以在最後給這個文件名,就像這樣'done

+1

我建議發佈一些來自'input.txt'文件的數據。 –

回答

0

試試這個。

while read line; do 
    dest=${line%%\?*} 
    dest=${dest##*/} 
    mkdir -p "$prefix" 
    wget -O "$prefix/$dest" "$line" 
done <input.txt 

Bash的變量操作基本上等同於你的sed腳本,只有更有效的(也許有點更強大的),因爲沒有外部進程涉及。

還要注意可變插值周圍的雙引號。任何包含文件名的變量 - 更一般地說,大多數情況下都包含任何可變插值 - 都需要用雙引號引起來。