Comando di decompressione di Linux: opzione per forzare la sovrascrittura?


173

Sto scrivendo uno script di shell che decomprime un file ZIP in una gerarchia di file esistente, potenzialmente sovrascrivendo alcuni dei file.

Il problema è che il comando unzip chiede conferma:
replace jsp/extension/add-aspect.jsp? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

Esiste un'opzione per forzare la decompressione per sovrascrivere i file?

Risposte:


266

Secondo http://www.manpagez.com/man/1/unzip/ è possibile utilizzare l' -oopzione per sovrascrivere i file:

unzip -o /path/to/archive.zip

Si noti che -o, come la maggior parte delle unzipopzioni, deve precedere il nome dell'archivio.


1
ad es .: unzip -o ZIP_PATHfunziona come modificatore.
bonzofenix,

10
-oopzione deve essere utilizzata prima di qualsiasi altro argomento. Esempio:unzip -o /path/to/archive.zip -d /destination_dir
FelikZ,

1
@FelikZ Grazie per il dettaglio, ho aggiunto il tuo esempio (ridotto) alla risposta
foraidt

questo non funziona nei siti Web di Azure (Windows).
Loretoparisi,

@loretoparisi Di cosa stai parlando? Questa è una domanda Linux. Stai cercando qualcosa come Expand-Archive ?
Franklin Yu,

31

Se è necessario decomprimere per sostituire solo i nuovi file, è possibile utilizzare

unzip -f archieve.zip

Ma per riferimenti futuri, puoi semplicemente digitare

unzip 

e otterrai un elenco degli argomenti per questo pacchetto. I possibili argomenti per questo caso sono:

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

Usa quello che ritieni più adatto alle tue esigenze.


6
+1, mi piace la versione più sottile e più amichevole di "ecco come rtfm per il contesto, ma ecco la sezione pertinente dell'approccio m".
Nathan Basanese,

1
Ho anche cercato aiuto, ma non ho capito la differenza. tra -u update files, create if necessarye -f freshen existing files, create none🤷‍♂️?
juanmirocks,

//, La differenza sta nel comportamento se il file non esiste
Nathan Basanese

@juanmirocks Con -f, i file più recenti non verranno estratti affatto anche se non si trovano sulla destinazione (come se fosse creata una versione successiva dello zip che contiene file che il precedente decompressione non ha creato). Se non sai già che lo desideri, è probabile che tu non lo faccia. Al contrario, -u estrarrà file aggiuntivi non sulla destinazione, assicurando che non manchi nulla dalla destinazione che si trova nella zip.
poikilos,
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.