Comando de descompactação do Linux: opção para forçar a substituição?


173

Estou escrevendo um script de shell que descompacta um arquivo ZIP em uma hierarquia de arquivos existente, potencialmente substituindo alguns dos arquivos.

O problema é que o comando descompactar pede confirmação:
replace jsp/extension/add-aspect.jsp? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

Existe uma opção para forçar o descompactação para substituir os arquivos?

Respostas:


266

De acordo com http://www.manpagez.com/man/1/unzip/, você pode usar a -oopção para substituir arquivos:

unzip -o /path/to/archive.zip

Observe que -o, como a maioria das unzipopções, tem que ir antes do nome do arquivo.


1
por exemplo unzip -o ZIP_PATH:, funciona como um modificador.
21414 Bonzofenix

10
-oA opção deve ser usada antes de qualquer outro argumento. Exemplo:unzip -o /path/to/archive.zip -d /destination_dir
FelikZ

1
@FelikZ Obrigado pelos detalhes, adicionei o seu exemplo (simplificado) à resposta
fora de

isso não funciona nos sites do Azure (Windows).
loretoparisi

@loretoparisi Do que você está falando? Esta é uma pergunta do Linux. Você está procurando algo como Expand-Archive ?
Franklin Yu

31

Se você precisar descompactar para substituir apenas os novos arquivos, poderá usar

unzip -f archieve.zip

Mas para referências futuras, você pode apenas digitar

unzip 

e você obterá uma lista dos argumentos para este pacote. Os argumentos possíveis para este caso são:

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

Use o que você achar mais adequado às suas necessidades.


6
+1, eu gosto da versão mais sutil e amigável de "aqui está como rtfm para contexto, mas aqui está a seção relevante da abordagem m".
Nathan Basanese

1
Também olhou para a ajuda, mas não entendeu o diff. entre -u update files, create if necessarye -f freshen existing files, create none🤷‍♂️?
Juanmirocks # 26/18

//, a diferença está no comportamento, se o arquivo não existe
Nathan Basanese

@juanmirocks Com -f, os arquivos mais recentes não serão extraídos, mesmo que não estejam no destino (por exemplo, se uma versão posterior do zip for criada com arquivos que o descompactação anterior não criou). Se você ainda não sabe o que deseja, é provável que não o faça. Pelo contrário, -u extrairá arquivos adicionais que não estão no destino, garantindo que nada esteja faltando no destino que está no zip.
poikilos 22/02
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.