Wget

使用 wget 整理文件名

  • January 3, 2018

我正在從包含 wget 文件名之外的附加資訊的 url 下載文件列表。這導致文件名如下:

pythonbook.pdf@y=11&x=123

我真正想要的只是 pythonbook.pdf 部分。我的文件列表基本上是一個 URL 列表,例如:

https://dl.domain.com/pythonbook.pdf@y=11&x=123

我怎樣才能沒有文件名中不必要的部分?

在這種情況下,可能最容易遍歷整個列表(因為wget似乎不支持動態創建輸出文件名):

while read url; do
   t=${url##*/}  # removes protocol and hostname
   pdf=${t%@*}   # removes part from @ onwards
   wget -O "$pdf" "$url"
done < LIST-OF-URLs

url是從文件中的 URL 列表中讀取的 URL,pdf只是其中的文件名部分。


如果名稱不唯一,您可以在文件名中添加一個數字,例如像這樣(假設所有文件都是 PDF):

i=0
while read url; do
   t=${url##*/}      # removes protocol and hostname
   pdf=${t%.pdf@*}   # removes part from .pdf@ onwards
   wget -O "$pdf-$i.pdf" "$url"
   ((i++))
done < LIST-OF-URLs

或(如果文件有不同的後綴)

i=0
while read url; do
   t=${pdf##*/}    # removes protocol and hostname
   pdf=${t%@*}     # removes part from @ onwards
   wget -O "$i-$pdf" "$url"
   ((i++))
done < LIST-OF-URLs

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