Come "annullare" il comando di decompressione?


19

Ho usato "unzip XXX.zip" per estrarre un file zip, sfortunatamente, ho fatto un errore.

Ora voglio eliminare tutti i file e le directory generati da "decomprimere".
Come posso annullarlo?

Risposte:


29

Usa questo:

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

Usa questo se sei scettico (chiederà conferma)

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

Non riesce se qualche file ha spazi nei loro nomi ... (+1 ora con la -imodifica. :)
sarnold

Il problema è nel awk '{print $4}'- potrebbe essere presente un nome file con spazi $4 $5 $6 .... :)
sarnold,

1
Ok. Risolto anche quello.
Abhijeet Rastogi,

5
FTR questo elimina anche il file zip originale
sjr

A modo mio:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei,

5

Sei in un punto difficile; l' zipinfo(1)utilità standard non fornisce alcun meccanismo per estrarre nomi di file non ambigui da un archivio. Ma puoi avvicinarti:

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

Se sei sicuro che nessuno dei file contenga nuove righe, puoi rimuovere l' -iopzione rm(1)(che diventerà sicuramente noiosa).


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

Il lavoro perché -Zinvoca zipinfoutilità e -1l'opzione dice di stampare solo i nomi dei file

Puoi trovare maggiori dettagli al riguardo attraverso man unzipe man 1 zipinfocomandi


1

Se si desidera ripulire la directory dopo aver decompresso accidentalmente senza creare prima una cartella, è possibile creare la cartella, decomprimerla e quindi:

rm -r ` ls folder `

"` "è super utile per concatenare i comandi ma è molto letterale.

I commenti hanno migliorato questa risposta, se vuoi assicurarti di rimuovere anche i file nascosti (cosa che probabilmente fai), fallo

rm -r ` ls -A folder `

scuse per affrettarsi alla sintassi errata, il voto in giù può essere rimosso?
chrispepper1989,

1
Se zip ha rifiutato di sovrascrivere qualsiasi file, gli originali verranno eliminati. Se alcuni file nascosti sono stati decompressi, non verranno rimossi (a meno che tu non lo usi ls -a).
gmarmstrong,

1
O meglio, ls -Aper evitare errori dalla quotazione .e..
gmarmstrong

0

Per fare questo in Nautilus (senza la riga di comando), puoi semplicemente andare dove hai estratto i file per errore, ordinare i file facendo clic sulla scheda "Modificato", quindi selezionare ed eliminare tutti i file etichettati con l'ora esatta ha eseguito il comando unzip.


1
Si prega di leggere di nuovo attentamente la domanda. La tua risposta non risponde alla domanda originale. Sfortunatamente Linux non include Windows Explorer.
DavidPostill

Ah sì! Non mi era venuto in mente che decomprimere non fosse un comando del terminale di Windows fino ad ora. Grazie! Controllerò per vedere se Nautilus ha funzionalità simili e modificherò la risposta. Altrimenti, lo rimuoverò e basta.
Cameronroytaylor,

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

2
Sebbene ciò possa rispondere alla domanda, sarebbe una risposta migliore se tu potessi fornire qualche spiegazione sul perché lo faccia.
DavidPostill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.