-O filename
работает только тогда, когда вы даете ему один URL.
При наличии нескольких URL-адресов весь загружаемый контент заканчивается на filename
.
Вы можете использовать while...loop
:
cat urls.txt | while read url
do
wget "$url" -O "${url##*/}" # <-- use custom name here
done