Commande unzip de Linux: Option pour forcer le remplacement?

173

J'écris un script shell qui décompresse un fichier ZIP dans une hiérarchie de fichiers existante, ce qui risque de remplacer certains de ces fichiers.

Le problème est que la commande unzip demande une confirmation:
replace jsp/extension/add-aspect.jsp? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

Existe-t-il une option pour forcer le décompression à écraser les fichiers?

Nicolas Raoul
la source

Réponses:

266

Selon http://www.manpagez.com/man/1/unzip/, vous pouvez utiliser l' -ooption pour écraser les fichiers:

unzip -o /path/to/archive.zip

Notez que -o, comme la plupart des unzipoptions de, doit être placé avant le nom de l'archive.

foraidt
la source
1
par exemple unzip -o ZIP_PATH:, fonctionne comme un modificateur.
bonzofenix
10
-oCette option doit être utilisée avant tout autre argument. Exemple:unzip -o /path/to/archive.zip -d /destination_dir
FelikZ
1
@FelikZ Merci pour le détail, j'ai ajouté votre exemple (dépouillé) à la réponse
foraidt
cela ne fonctionne pas sur les sites Web Azure (Windows).
loretoparisi
@loretoparisi De quoi parlez-vous? C'est une question Linux. Vous cherchez quelque chose comme Expand-Archive ?
Franklin Yu
31

Si vous devez décompresser pour ne remplacer que les nouveaux fichiers, vous pouvez utiliser

unzip -f archieve.zip

Mais pour les références futures, vous pouvez simplement taper

unzip 

et vous obtiendrez une liste des arguments de ce paquet. Les arguments possibles sont pour ce cas sont:

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

Utilisez celui qui vous convient le mieux.

Prateek Shankar
la source
6
+1, j'aime bien la version plus subtile et conviviale de "voici comment rtfm pour le contexte, mais voici la section pertinente de l'approche m".
Nathan Basanese
1
A également regardé l'aide, mais n'a pas compris le diff. entre -u update files, create if necessaryet -f freshen existing files, create none🤷‍♂️?
juanmirocks
//, La différence réside dans le comportement si le fichier n'existe pas
Nathan Basanese
@juanmirocks Avec -f, les fichiers les plus récents ne seront pas du tout extraits même s'ils ne sont pas sur la destination (par exemple, si une version ultérieure du zip est créée et contient des fichiers que le fichier décompressé précédent n'a pas créés). Si vous ne savez pas déjà que vous voulez cela, il y a des chances pour que vous ne le vouliez pas. Au contraire, -u extraira des fichiers supplémentaires qui ne sont pas sur la destination, en s'assurant que rien ne manque à la destination qui se trouve dans le zip.
poikilos