Simpan file ke folder tertentu dengan perintah curl

182

Dalam skrip shell, saya ingin mengunduh file dari beberapa URL dan menyimpannya ke folder tertentu. Apa flag CLI spesifik yang harus saya gunakan untuk mengunduh file ke folder tertentu dengan curlperintah, atau bagaimana lagi cara saya mendapatkan hasil itu?

Ziyaddin Sadigov
sumber
Tampaknya pemrograman bash adalah pemrograman ...
rjurney

Jawaban:

282

Saya tidak berpikir Anda bisa memberikan jalur untuk menggulung, tetapi Anda dapat CD ke lokasi, unduh dan CD kembali.

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

Atau menggunakan subkulit.

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

Kedua cara hanya akan mengunduh jika ada jalur. -Omenyimpan nama file jarak jauh. Setelah diunduh, ia akan kembali ke lokasi semula.

Jika Anda perlu mengatur nama file secara eksplisit, Anda dapat menggunakan -oopsi kecil :

curl -o target/path/filename URL
Atle
sumber
2
Saya memiliki perintah ini: curl -LOk basename /packages" github.com/ziyaddin/xampp/archive/master.zip ". Tetapi dikatakan bahwa nama file yang salah ->basename /packages
Ziyaddin Sadigov
10
Anda juga dapat menggunakan subkulit, seperti:(cd target/path; curl -O URL)
Ehtesh Choudhury
9
Apa perbedaan keduanya? CD pertama masuk ke direktori dan mengunduh file, lalu keluar. Yang kedua tetap di direktori saat ini dan file ikal ke lokasi tertentu. Yang kedua tampaknya lebih sederhana.
Henry Zhu
9
@HenryZhu Yang pertama nama file berasal dari nama file di server. Pada detik Anda mengganti nama konten yang Anda unduh menjadi nama yang Anda berikan.
turtlemonvh
4
Saya benar-benar ingin opsi untuk menentukan direktori, tetapi gunakan nama file server. Sepertinya menggunakan cdadalah pilihan terbaik saat ini, meskipun tampaknya sedikit tidak berlaku.
StockB
4

curltidak memiliki opsi untuk itu (tanpa juga menentukan nama file), tetapi wgettidak. Direktori dapat bersifat relatif atau absolut. Juga, direktori akan secara otomatis dibuat jika tidak ada.

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"
wisbucky
sumber