Secara default, wget menulis ke file yang namanya adalah komponen terakhir dari URL yang Anda berikan. Banyak server mengarahkan ulang URL http://www.url1.com/app?q=123&gibb=erish&gar=bleke URL yang berbeda dengan nama file yang terlihat bagus http://download.url1.com/files/something.pdf. Anda dapat memberi tahu wget untuk menggunakan nama dari URL yang dialihkan (yaitu something.pdf) alih-alih app?q=123&gibb=erish&gar=bledengan meneruskan --trust-server-namesopsi. Ini bukan mode default karena, jika digunakan secara sembarangan, ini dapat menyebabkan menimpa nama file yang tidak dapat diprediksi di direktori saat ini; tetapi jika Anda mempercayai server atau bekerja di direktori yang tidak mengandung file berharga lainnya, --trust-server-namesbiasanya hal yang tepat untuk digunakan.
Beberapa server menggunakan Content-Dispositionheader alih-alih pengalihan untuk menentukan nama file. Lulus --content-dispositionopsi untuk membuat wget menggunakan nama file ini.
Demikian:
wget --content-disposition --trust-server-names -i list_of_urls
Jika Anda masih tidak mendapatkan nama file yang terlihat bagus, Anda mungkin ingin menentukan sendiri. Misalkan Anda memiliki file yang berisi baris seperti
http://www.url1.com/app?q=123&gibb=erish&gar=ble foo.pdf
http://www.url2.com/app?q=111&wha=tcha&mac=allit bar.txt
Untuk membuat wget mengunduh file ke nama file yang ditentukan, dengan asumsi tidak ada karakter spasi putih di URL atau dalam nama file:
err=0
while read -r url filename tail; do
wget -O "$filename" "$url" || err=1
done <list_of_urls_and_file_names
The errvariabel mengandung 0 jika semua download berhasil dan 1 jika tidak, Anda dapat return $errjika Anda menempatkan potongan ini dalam fungsi atau exit $errjika Anda menempatkan potongan ini dalam sebuah string.
Jika Anda tidak ingin menentukan selain URL, dan Anda tidak bisa mendapatkan nama yang bagus dari server, Anda dapat menebak jenis file dan mencoba untuk mendapatkan setidaknya ekstensi yang berarti.
err=0
n=1
while read -r url; do
if wget -O tmpfile "$url"; then
ext=data
case $(file -i tmpfile) in
application/pdf) ext=pdf;;
image/jpeg) ext=jpg;;
text/html) ext=html;;
text/*) ext=txt;;
esac
mv tmpfile "$n.$ext"
else
err=1
fi
n=$((n+1))
done
Tambahkan jenis lain yang diinginkan. Jika fileperintah Anda tidak memiliki -mopsi, tinggalkan, dan periksa apa yang filekembali pada sistem Anda untuk jenis file yang Anda minati. Jika Anda memiliki file /etc/mime.typesdi sistem Anda, Anda dapat membaca asosiasi tipe MIME untuk ekstensi dari alih-alih memasok daftar Anda sendiri:
n=1
while read -r url; do
if wget -O tmpfile "$url"; then
mime_type=$(file -m tmpfile)
ext=$(awk "$1 == \"$mime_type\" {print \$2; exit} END {print \"data\"}" /etc/mime.types)
mv tmpfile "$n.$ext"
else
err=1
fi
n=$((n+1))
done
wget -O $2 $1. Dalam file list_of_urls, buat setiap baris menjadi url, spasi putih, nama file (mishttp://url1/blah&blah=whatever some.pdf. Kemudian gunakan yang sama seperti di atas, ganti baris wget dengan./thatscript.sh $url. Dalam kasus$urlini sebenarnya adalah sebuah baris dengan url dan nama file, tentu saja