Annuler l'extraction d'une archive tar.gz bz2 zip ou 7z
Il m'arrive souvent d'extraire des archives tar.gz ou autres, un peu partout, sur mes systèmes d'exploitation. Seulement voilà, parfois, l'archive ne contient pas de dossier et les fichiers sont alors extraits dans le dossier courant. Cela fait désordre, surtout si l'archive contenait beaucoup d'éléments.
Voici donc quelques commandes qui permettent d'annuler une extraction.
Pour une archive tar.gz :
for file in `tar tzf archive.tar.gz`; do rm -Rf $file; done
Pour une archive bz2 :
for file in `tar tjf archive.bz2`; do rm -Rf $file; done
Pour une archive zip :
for file in `unzip -l archive.zip | awk '{print $NF}' | tail -n +4 | head -n -2`; do rm -Rf $file; done
Pour une archive 7z :
for file in `7z t archive.7z | grep Testing | awk '{print $NF}'`; do rm -Rf $file; done
12 Commentaires pour "Annuler l'extraction d'une archive tar.gz bz2 zip ou 7z"
Flux des commentaires de cet article Ajouter un commentairePratique, je n'y avais jamais pensé. Merci pour l'astuce.
Ça c'est de l'astuce
a ouéééé ! Merci !
Ah ! J'le faisais déjà ... à la main (extract dans un dossier à part, puis suppression des fichiers 1/1 ..)
Pourquoi faire une boucle ? Il suffit de faire un : tar -tzf archive.tar.gz | xargs rm -rf
@zapple : parce que j'aime bien les boucles. Plus sérieusement, c'est la première méthode qui m'est venu à l'esprit. Après toutes les méthodes sont bonnes.
ATTENTION DANGER avec cette méthode !
En effet, si l'archive contient "/" vous allez lancer un rm -rf ... sur "/" !
Une méthode plus sûre :
tar tf archive.tar | sort -r | xargs rm -f 2>/dev/null
tar tf archive.tar | sort -r | xargs rmdir 2>/dev/null
A décliner selon le type d'archive...
Source :
http://www.linuxquestions.org/questions/linux-newbie-8/undoing-a-tar-extract-267152/#post3656061
Lorsqu'on fait un tar de plusieurs répertoires, je ne vois pas l'intéret en plus d'inclure le / dans le tar. Faire un tar revient à "rassembler" tous les répertoires et les sous répertoires dans un meme répertoire. S'il fallait faire un tar de /, cela va inclure tous les répertoires/sous répertoires de /, donc aucun intéret.
Pour résumer un / n'est jamais contenu dans un tar.
@zapple : le fait que tu n'en voies pas l'intérêt est-il une raison suffisante pour avoir confiance ?
Selon la doc : http://www.gnu.org/software/tar/manual/html_node/absolute.html
Il est vrai que par défaut, le "leading slash" est ignoré... mais bon, je préfère une commande sûre...
@PA : le leading slash est-il ignoré aussi pour unzip et 7z ? J'ai pas trouvé d'infos la dessus.
@pti-seb : unzip ignore aussi le leader slash il me semble. Je connais peu 7z en revanche. Il m'apparait cependant que la diversité des outils de (dé)compression est une bonne raison de préférer la solution "prudente"
Et pour ceux qui ne veulent pas faire tout ça. Même si c'est heu, moins spéctaculaire.
1. Créer un nouveau dossier (Ctrl+N dans Nautilus en mode graphique bien sûr)
2. Gentiment déplacer son archive dans le dossier.
3. Extraire l'archive dans ce nouveau dossier.
4. Trier si nécessaire.
5. Tout est clair.
n.b : Permet d'éviter des manipulatons dangeureuse pour votre système en mode console. Surtout pour si c'est pour impressionner vos potes.