Você parece querer baixar o arquivo em um diretório específico. Você não pode fazer isso passando o nome do diretório para wget. Passe um nome de arquivo completo ou deixe o wget escolher o nome no link. Se wget escolher o nome, ele salvará o arquivo no diretório atual, portanto, mude para o diretório desejado primeiro.
Analisar a lista de URLs com uma substituição de comando é frágil. Pode falhar se os URLs contiverem ?
e falharão se contiverem espaços. Você pode usar read
para processar a lista linha por linha.
csv_file="$PWD/test.csv"
cd /mnt/nas_1tb/a-test/
while IFS=, read -r column1 url trail; do
wget "$url"
done <"$csv_file"
Como você deseja escolher os nomes dos arquivos, deve passar a opção -O
. Mas passe todo o nome do arquivo.
Para atualizar o status do download na terceira coluna, crie um novo arquivo com os dados atualizados.
while IFS=, read -r new_name url status; do
wget -q -O "/mnt/nas_1tb/a-test/$new_name" "$url"
case $? in
0) status='File fownloaded';;
8) status='File not found or server error';;
*) status='Download failed';;
esac
printf '%s,%s,%s\n' "$new_name" "$url" "$status"
done <test.csv >test-results.csv
Observe que o wget não facilita a distinção entre "arquivo não encontrado" (HTTP 404) de outros erros (por exemplo, HTTP 403 não autorizado, erro interno do servidor HTTP 500, etc.). Mas, pelo menos, você recebe erros diferentes para erros quando o servidor não pode retornar uma resposta.