Comment «annuler» la commande de décompression?


19

J'ai utilisé "unzip XXX.zip" pour extraire un fichier zip, malheureusement, je fais une erreur.

Maintenant, je veux supprimer tous les fichiers et répertoires générés par "décompresser".
Comment puis-je l'annuler?

Réponses:


29

utilisez ceci:

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

Utilisez-le si vous êtes sceptique (demandera confirmation)

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

Échoue si des fichiers ont des espaces dans leurs noms ... (+1 maintenant avec l' -iédition. :)
sarnold

Le problème est dans le awk '{print $4}'- un nom de fichier avec des espaces pourrait être $4 $5 $6 .... :)
sarnold

1
D'accord. Corrigé cela aussi.
Abhijeet Rastogi

5
FTR cela supprime également le fichier zip d'origine
sjr

Ma façon:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei

5

Vous êtes dans une situation difficile; l' zipinfo(1)utilitaire standard ne fournit aucun mécanisme pour extraire des noms de fichiers sans ambiguïté d'une archive. Mais , vous pouvez vous en approcher:

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

Si vous êtes sûr qu'aucun des fichiers ne contient de nouvelle ligne, vous pouvez supprimer l' -ioption rm(1)(qui deviendra sûrement fastidieuse).


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

Fait le travail car -Zinvoque l' zipinfoutilitaire et l' -1option lui indique d'imprimer uniquement les noms de fichiers

Vous pouvez trouver plus de détails à ce sujet via les commandes man unzipetman 1 zipinfo


1

Si vous souhaitez nettoyer votre répertoire après avoir décompressé accidentellement sans créer un dossier au préalable, vous pouvez créer le dossier, décompressez-le et ensuite:

rm -r ` ls folder `

"` "est super utile pour chaîner des commandes mais c'est très littéral.

Les commentaires ont amélioré cette réponse, si vous voulez vous assurer de supprimer également les fichiers cachés (ce que vous faites probablement), faites-le

rm -r ` ls -A folder `

des excuses pour se précipiter vers la syntaxe incorrecte, le vote négatif peut-il être supprimé?
chrispepper1989

1
Si zip refusait d'écraser des fichiers, les originaux seront supprimés. Si des fichiers cachés ont été décompressés, ils ne seront pas supprimés (sauf si vous les utilisez ls -a).
gmarmstrong

1
Ou plutôt, ls -Apour éviter les erreurs de listage .et..
gmarmstrong

0

Pour ce faire dans Nautilus (sans la ligne de commande), vous pouvez simplement naviguer jusqu'à l'endroit où vous avez accidentellement extrait les fichiers, trier les fichiers en cliquant sur l'onglet "Modifié", puis sélectionner et supprimer tous les fichiers étiquetés avec l'heure exacte à laquelle vous a exécuté la commande de décompression.


1
Veuillez relire attentivement la question. Votre réponse ne répond pas à la question d'origine. Malheureusement, Linux n'inclut pas l'Explorateur Windows.
DavidPostill

Ah oui! Il ne m'était pas venu à l'esprit que décompresser n'était pas une commande de terminal Windows jusqu'à présent. Merci! Je vais vérifier si Nautilus a des fonctionnalités similaires et modifier la réponse. Sinon, je vais juste le supprimer.
cameronroytaylor

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

2
Bien que cela puisse répondre à la question, ce serait une meilleure réponse si vous pouviez expliquer pourquoi .
DavidPostill
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.