wget -o escreve arquivos vazios em caso de falha

12

Se eu escrever wget "nenhum tal endereço" -o "test.html" Primeiro, cria o test.html e, em caso de falha, deixa-o vazio. No entanto, quando não estiver usando -o, ele aguardará para ver se o download é bem-sucedido e somente depois disso, ele gravará o arquivo.

Gostaria que o último comportamento fosse aplicado a -o também, é possível?

    
por akurtser 22.07.2010 / 11:00

3 respostas

15

wget retorna um status de saída diferente de zero quando a URL não é encontrada, portanto, é possível anexar um comando de remoção na falha:

wget "url" -O file || rm -f file

Ou crie um arquivo temporário e mova-o somente para o local desejado:

wget "url" -O /tmp/wget && mv /tmp/wget file

O segundo tem o benefício de não excluir um arquivo existente em caso de falha, mas certifique-se de usar nomes temporários exclusivos (consulte man tempfile ) se estiver executando várias instâncias em paralelo.

    
por 06.10.2012 / 23:43
8

Como escrito nos comentários, wget -O é mais como um redirecionamento de shell que sempre grava no arquivo independentemente dos erros.

Você pode usar curl -f :

curl -f http://nonexistent/file.jpg -o localfile.jpg

Ele não tocará no arquivo local se houver um erro ao buscar o arquivo.

    
por 06.05.2016 / 10:43
4

A sintaxe correta é

wget "url" -O file

observe o UPPERCASE O. As opções -o dizem ao wget para escrever um arquivo de log , é por isso que ele está sempre escrito mesmo no fracasso.

    
por 22.07.2010 / 11:18

Tags