Perintah unzip Linux: Opsi untuk memaksa ditimpa?

173

Saya menulis skrip shell yang membuka ritsleting file ZIP ke dalam hierarki file yang ada, berpotensi menimpa beberapa file.

Masalahnya adalah bahwa perintah unzip meminta konfirmasi:
replace jsp/extension/add-aspect.jsp? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

Apakah ada opsi untuk memaksa unzip untuk menimpa file?

Nicolas Raoul
sumber

Jawaban:

266

Menurut http://www.manpagez.com/man/1/unzip/ Anda dapat menggunakan -oopsi untuk menimpa file:

unzip -o /path/to/archive.zip

Perhatikan bahwa -o, seperti kebanyakan unzipopsi lain, harus ada sebelum nama arsip.

foraidt
sumber
1
misalnya:, unzip -o ZIP_PATHberfungsi sebagai pengubah.
bonzofenix
10
-oOpsi harus digunakan sebelum argumen lain. Contoh:unzip -o /path/to/archive.zip -d /destination_dir
FelikZ
1
@FelikZ Terima kasih atas perinciannya, saya menambahkan contoh Anda (dilucuti) ke jawabannya
foraidt
ini tidak berfungsi di situs web Azure (Windows).
loretoparisi
@loretoparisi Apa yang kamu bicarakan? Ini pertanyaan Linux. Apakah Anda mencari sesuatu seperti Expand-Archive ?
Franklin Yu
31

Jika Anda perlu unzip untuk mengganti file baru saja, Anda dapat menggunakan

unzip -f archieve.zip

Tetapi untuk referensi di masa mendatang, Anda bisa mengetik

unzip 

dan Anda akan mendapatkan daftar argumen untuk paket ini. Argumen yang mungkin untuk kasus ini adalah:

-f  freshen existing files, create none
-n  never overwrite existing files         
-q  quiet mode (-qq => quieter)
-o  overwrite files WITHOUT prompting    

Gunakan yang menurut Anda lebih cocok untuk kebutuhan Anda.

Prateek Shankar
sumber
6
+1, saya menyukai versi yang lebih halus, lebih ramah dari "inilah cara rtfm untuk konteks, tapi inilah bagian yang relevan dari pendekatan m".
Nathan Basanese
1
Juga melihat bantuan, tetapi tidak mengerti perbedaannya. antara -u update files, create if necessarydan -f freshen existing files, create none🤷‍♂️?
juanmirocks
//, Perbedaannya ada pada perilaku jika file tidak ada
Nathan Basanese
@juanmirocks Dengan -f, file yang lebih baru tidak akan diekstraksi sama sekali walaupun tidak ada di tujuan (seperti jika versi zip yang lebih baru dibuat yang memiliki file yang tidak dibuat unzip sebelumnya). Jika Anda belum tahu Anda menginginkannya, kemungkinan besar Anda tidak tahu. Sebaliknya, -u akan mengekstrak file tambahan bukan pada tujuan, memastikan tidak ada yang hilang dari tujuan yang ada di zip.
poikilos