Saya menggunakan curl dalam sintaks ini:
curl -o myfile.jpg http://mysite.com/myfile.jpg
Jika saya menjalankan perintah ini dua kali, saya mendapatkan dua file:
myfile.jpg
myfile-1.jpg
Bagaimana saya bisa memberi tahu CURL bahwa saya ingin menimpa file itu jika ada?
curl
versi apa pada sistem yang mana?Jawaban:
Menggunakan:
sumber
noclobber
mengaktifkan opsi (set +o noclobber
).Saya bertemu masalah yang sama dan saya ingin menggunakan kembali nama file yang sama apa pun yang diberikan sisi server, dalam kasus Anda, Anda mungkin mendapatkan nama file dengan
basename
maka Anda dapat menulis fungsi bash pembantu seperti:
tetapi dalam kasus saya nama file bahkan bukan bagian dari url, ia datang dengan disposisi konten; dengan curl baris perintahnya adalah
Anda dapat mengabaikan
-fSL
itu menangani jika sisi server memberikan 302 Redirection; yang-R
untuk sisi server timestamp,-J
untuk mempertimbangkan sisi serverContent-Disposition
, dan-O
untuk beralih ke perilaku Download bukannya dumping di terminal;Namun, itu masih menderita menolak untuk menimpa jika nama file ada; Saya ingin menimpa jika
Last-Modified
timestamp sisi server lebih baru;berakhir dengan solusi wget yang dapat melakukannya:
yang
-N
adalah untuk memeriksa server side tiemstamp dan menimpa hanya ketika sisi server memiliki versi baru;--content-disposition
adalah untuk mempertimbangkanContent-Disposition
tajuk; dan perilaku default wget adalah mengunduh, ke nama file yang diberikan dari sisi server.dalam kasus Anda, jika Anda tidak akan peduli cap waktu, hanya saja
sumber