Salva il file in una cartella specifica con il comando arricciatura


182

In uno script di shell, voglio scaricare un file da alcuni URL e salvarlo in una cartella specifica. Qual è il flag CLI specifico che dovrei usare per scaricare i file in una cartella specifica con il curlcomando o come posso ottenere quel risultato?


Sembrerebbe che la programmazione bash stia programmando ...
rjurney,

Risposte:


282

Non credo che tu possa dare un percorso per arricciare, ma puoi CD per la posizione, scaricare e ricollegare il CD.

cd target/path && { curl -O URL ; cd -; }

O usando subshell.

(cd target/path && curl -O URL)

Entrambi i modi verranno scaricati solo se esiste un percorso. -Omantiene il nome del file remoto. Dopo il download, tornerà alla posizione originale.

Se è necessario impostare il nome file in modo esplicito, è possibile utilizzare una piccola -oopzione:

curl -o target/path/filename URL

2
Ho questo comando: curl -LOk basename /packages" github.com/ziyaddin/xampp/archive/master.zip ". Ma dice che il nome del file sbagliato ->basename /packages
Ziyaddin Sadigov

10
Puoi anche usare una subshell, in questo modo:(cd target/path; curl -O URL)
Ehtesh Choudhury

9
Qual è la differenza tra i due? Il primo cd viene inserito in una directory e scarica il file, quindi viene estratto. Il secondo rimane nella directory corrente e arriccia il file nella posizione specificata. Il secondo sembra più semplice.
Henry Zhu,

9
@HenryZhu Nel primo il nome file è derivato dal nome del file sul server. Nel secondo si sta rinominando il contenuto scaricato con un nome fornito.
turtlemonvh,

4
Vorrei davvero un'opzione per specificare una directory, ma utilizzare il nome file del server. Sembra che l'utilizzo cdsia l'opzione migliore al momento, anche se sembra leggermente inelegante.
StockB,

4

curlnon ha un'opzione (senza specificare anche il nome del file), ma lo wgetfa. La directory può essere relativa o assoluta. Inoltre, la directory verrà creata automaticamente se non esiste.

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.