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=ble
ke 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=ble
dengan meneruskan --trust-server-names
opsi. 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-names
biasanya hal yang tepat untuk digunakan.
Beberapa server menggunakan Content-Disposition
header alih-alih pengalihan untuk menentukan nama file. Lulus --content-disposition
opsi 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 err
variabel mengandung 0 jika semua download berhasil dan 1 jika tidak, Anda dapat return $err
jika Anda menempatkan potongan ini dalam fungsi atau exit $err
jika 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 file
perintah Anda tidak memiliki -m
opsi, tinggalkan, dan periksa apa yang file
kembali pada sistem Anda untuk jenis file yang Anda minati. Jika Anda memiliki file /etc/mime.types
di 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$url
ini sebenarnya adalah sebuah baris dengan url dan nama file, tentu saja