Domanda

Sto cercando di usare curl per scaricare una seried di file nel seguente formato:

  

http://example.com/001.jpg

     

..

     

http://example.com/999.jpg

Così ho usato questo comando:

  

ricciolo tempo   " http://example.com/[0- 9] [0-9] [0-9] .jpg "   -o "# 1 # 2 # 3.gif"

Ma alcuni dei file non esistono, e che il comando creerà i file sul mio fine, ma in realtà sarà solo contenere la pagina di errore.

Ho bisogno di un modo per arricciare per verificare se esiste sul server remoto prima di scaricarlo.

So wget può farlo, ma wget sembra prendere circa 5 volte più lunghi per l'esecuzione. Il comando che ho usato per provare in wget è questo:

  

wget tempo    http://example.com/ {0..9} {0..9} {0..9 } .jpg

È stato utile?

Soluzione

Prova -f / - opzione fallire:

  

(HTTP) Fail in silenzio (nessun output a tutti) in caso di errori del server. Ciò è in gran parte fatto per consentire una migliore script ecc per affrontare meglio tentativi falliti. In casi normali, quando un server HTTP non riesce a fornire un documento, restituisce un documento HTML che indica in modo (che spesso descrive il motivo e anche peggio). Questo flag impedisce ricciolo da output che l'errore e tornare 22.

     

Questo metodo non è sicuro-sicuro e ci sono occasioni in cui codici di risposta non riuscite passeranno attraverso, soprattutto quando l'autenticazione è coinvolto (codici di risposta 401 e 407).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top