Comando de descompresión de Linux: ¿Opción para forzar la sobrescritura?

169

Estoy escribiendo un script de shell que descomprime un archivo ZIP en una jerarquía de archivos existente, posiblemente sobrescribiendo algunos de los archivos.

El problema es que el comando descomprimir pide confirmación:
replace jsp/extension/add-aspect.jsp? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

¿Hay alguna opción para forzar la descompresión para sobrescribir los archivos?

Nicolas Raoul
fuente

Respuestas:

260

De acuerdo con http://www.manpagez.com/man/1/unzip/ puede usar la -oopción para sobrescribir archivos:

unzip -o /path/to/archive.zip

Tenga en cuenta que -o, como la mayoría de unziplas opciones de, tiene que ir antes del nombre del archivo.

temeroso
fuente
1
Por ejemplo:, unzip -o ZIP_PATHfunciona como un modificador.
bonzofenix
10
-oLa opción debe usarse antes que cualquier otro argumento. Ejemplo:unzip -o /path/to/archive.zip -d /destination_dir
FelikZ
1
@FelikZ Gracias por los detalles, agregué su ejemplo (despojado) a la respuesta
miedo
Esto no funciona en los sitios web de Azure (Windows).
loretoparisi
@loretoparisi ¿De qué estás hablando? Esta es una pregunta de Linux. ¿Estás buscando algo como Expandir-Archivo ?
Franklin Yu el
30

Si necesita descomprimir para reemplazar solo los archivos nuevos, puede usar

unzip -f archieve.zip

Pero para futuras referencias, solo puede escribir

unzip 

y obtendrá una lista de los argumentos para este paquete. Los posibles argumentos para este caso son:

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

Use el que le parezca más adecuado para sus necesidades.

Prateek Shankar
fuente
66
+1, me gusta la versión más sutil y amigable de "aquí está cómo rtfm para el contexto, pero aquí está la sección relevante del enfoque m".
Nathan Basanese
1
También miré la ayuda, pero no entendí la diferencia. entre -u update files, create if necessaryy -f freshen existing files, create none🤷‍♂️?
juanmirocks
//, La diferencia está en el comportamiento si el archivo no existe
Nathan Basanese
@juanmirocks Con -f, los archivos más nuevos no se extraerán en absoluto, incluso si no están en el destino (por ejemplo, si se crea una versión posterior del zip que tiene archivos que el descompresión anterior no creó). Si aún no sabe que quiere eso, es probable que no lo haga. Por el contrario, -u extraerá archivos adicionales que no estén en el destino, asegurando que no falte nada del destino que está en el zip.
poikilos