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?

hero2008
fonte

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 {} 
Abhijeet Rastogi
fonte
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).

sarnold
fonte
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

Prathu Baronia
fonte
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 `
chrispepper1989
fonte
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.

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