Como "desfazer" o comando descompactar?


19

Eu usei "descompacte XXX.zip" para extrair um arquivo zip, infelizmente, eu cometo um erro.

Agora eu quero excluir todos os arquivos e diretórios gerados por "descompacte".
Como posso desfazer isso?

Respostas:


29

usa isto:

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -v {}

Use isso se você for cético (solicitará confirmação)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 

Falha se todos os arquivos têm espaços em seus nomes ... (+1 agora com a -iedição :).
sarnold

O problema está no awk '{print $4}'- um nome de arquivo com espaços pode estar $4 $5 $6 .... :)
sarnold

11
Está bem. Corrigido isso também.
Abhijeet Rastogi

5
FTR isso também exclui o arquivo zip originais
SJR

Do meu jeito:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei 23/12/2015

5

Você está em uma situação difícil; o zipinfo(1)utilitário padrão não fornece nenhum mecanismo para obter nomes de arquivos inequívocos de um arquivo morto. Mas você pode chegar perto:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i

Se você tiver certeza de que nenhum dos arquivos possui novas linhas, remova a -iopção rm(1)(que certamente será tediosa).


4
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}

Faz o trabalho porque -Zchama o zipinfoutilitário e a -1opção para imprimir apenas nomes de arquivos

Você pode encontrar mais detalhes sobre isso através de man unzipe man 1 zipinfocomandos


1

Se você deseja limpar seu diretório após descompactar acidentalmente sem criar uma pasta primeiro, crie a pasta, descompacte e, em seguida, faça o seguinte:

rm -r ` ls folder `

"` "é super útil para encadear comandos, mas é muito literal.

Os comentários melhoraram esta resposta. Se você deseja garantir a remoção de arquivos ocultos também (o que provavelmente faz), faça isso

rm -r ` ls -A folder `

desculpas por ter corrido para a sintaxe incorreta, a votação para baixo pode ser removida?
precisa saber é o seguinte

11
Se o zip se recusar a substituir qualquer arquivo, os originais serão excluídos. Se algum arquivo oculto tiver sido descompactado, ele não será removido (a menos que você o use ls -a).
22819 gmarmstrong

11
Ou melhor ls -A...
,,

0

Para fazer isso no Nautilus (sem a linha de comando), você pode simplesmente navegar para onde você extraiu acidentalmente os arquivos, classificá-los clicando na guia "Modificado" e selecionar e excluir todos os arquivos rotulados na hora exata em que executou o comando descompactar.


11
Por favor, leia a pergunta novamente com atenção. Sua resposta não responde à pergunta original. Infelizmente, o Linux não inclui o Windows Explorer.
DavidPostill

Ah sim! Não me ocorreu que descompactar não era um comando de terminal do Windows até agora. Obrigado! Vou verificar se o Nautilus tem funcionalidade semelhante e editar a resposta. Caso contrário, vou removê-lo.
cameronroytaylor

-1
unzip -Z -1 /path/to/zip/file.zip | xargs -I{} rm -rf {}

2
Embora isso possa responder à pergunta, seria uma resposta melhor se você pudesse fornecer alguma explicação para isso.
DavidPostill
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.