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?

hero2008
la source

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 {} 
Abhijeet Rastogi
la source
É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).

sarnold
la source
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

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

cameronroytaylor
la source
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 {}
Igor Shcheglakov
la source
2
Bien que cela puisse répondre à la question, ce serait une meilleure réponse si vous pouviez expliquer pourquoi .
DavidPostill