Tout le monde a déjà eu le problème : on décompresse une archive dans un shell avec unzip, unrar ou tar ... et si l'archive est mal faite, on se retrouve avec plein de fichiers dans le répertoire courant. Après on passe une plombe a déplacer tous les fichiers dans un répertoire ...
Si cela vous agace à chaque fois (comme ça a été mon cas), voici ma solution simple à l'aide de scripts qui extraient dans tous les cas les fichiers dans un unique répertoire, basés pour le moment sur unzip, unrar et tar. Ils sont ici :
http://www.jerox.org/Data/ShellScripts/unzipToDir.sh
http://www.jerox.org/Data/ShellScripts/unrarToDir.sh
http://www.jerox.org/Data/ShellScripts/tarToDir.sh
Exemple avec un zip de nvidia :
$ wget http://download.nvidia.com/developer/SDK/Individual_Samples/(...)
$ unzip simple_framebuffer_object.zip
Archive: simple_framebuffer_object.zip
creating: DEMOS/
…
creating: inc/
…
creating: LIBS/
…
Cette archive pourrit notre répertoire courant ! Donc mieux vaut utiliser unzipToDir.sh à la place :
$ unzipToDir.sh simple_framebuffer_object.zip
simple_framebuffer_object dont exists, extracting simple_framebuffer_object.zip to it:
Archive: simple_framebuffer_object.zip
creating: simple_framebuffer_object/DEMOS/
...
creating: simple_framebuffer_object/inc/
…
# Heu... Et man ?
Posté par MalMok . Évalué à 10.
Ca marche aussi avec tar : "tar -tzvf" ou "tar -tjvf"
unrar le fait aussi... "unrar l"
Tu trouvera ton bonheur dans tout bon man... :)
[^] # Re: Heu... Et man ?
Posté par jikao . Évalué à 8.
[^] # Re: Heu... Et man ?
Posté par Marc Poiroud (site web personnel) . Évalué à 6.
$ less mon_archive.tar.gz
suffit pour afficher le contenu ... ;)
[^] # Re: Heu... Et man ?
Posté par Marc (site web personnel) . Évalué à 2.
marc@g-brouette:~$ less /tmp/gdesk.tar.gz
"/tmp/gdesk.tar.gz" may be a binary file. See it anyway?
Ah ben pas partout :)
[^] # Re: Heu... Et man ?
Posté par Marc Poiroud (site web personnel) . Évalué à 5.
http://linuxfr.org/tips/328.html
[^] # :)
Posté par Marc (site web personnel) . Évalué à 2.
# Tu rox
Posté par Guillaume Knispel . Évalué à 1.
# Tar.
Posté par Xavier Maillard . Évalué à 3.
Simple question hein :)
Bravo pour les scripts (même si je ne n'en vois pas non plus la nécéssité).
[^] # Re: Tar.
Posté par Nicolas Schoonbroodt . Évalué à 8.
[^] # Re: Tar.
Posté par Ph Husson (site web personnel) . Évalué à 2.
# Et pour récupérer un dé-tarrage foiré
Posté par benoar . Évalué à 9.
tar tfj monarchive.tar.bz2 | xargs rm -rf
À ajuster avec z pour une archive gzippée. Bon, le rm -rf ça peut être un peu dangereux, à utiliser avec précaution (par exemple si l'archive contient des chemins absolus; normalement tar les enlève par défaut quand on crée une archive).# Moi j'utilise ce script ...
Posté par Colin Pitrat (site web personnel) . Évalué à 2.
#!/bin/bash
DIRNAME="$(dirname "$@")"
FILENAME="$(basename "$@")"
TYPE=`echo $FILENAME | sed 's/tar\.gz$/tgz/g' | sed 's/tar\.bz2$/tbz2/g' | sed 's/.*\.//g'`
EXTENSION=`echo $FILENAME | sed 's/.*\.//'`
if [ "$EXTENSION" = "bz2" ] || [ "$EXTENSION" = "gz" ]
then
EXTENSION="tar.$EXTENSION"
fi
DESTDIR="$(basename "$@" .$EXTENSION)"
cd "$DIRNAME"
case "$TYPE" in
"zip")
unzip -d "$DESTDIR" "$FILENAME"
;;
"tar")
mkdir "$DESTDIR"
tar xf "$FILENAME" -C "$DESTDIR"
;;
"tbz2")
mkdir "$DESTDIR"
tar xjf "$FILENAME" -C "$DESTDIR"
;;
"tgz")
mkdir "$DESTDIR"
tar xzf "$FILENAME" -C "$DESTDIR"
;;
"xpi")
mkdir "$DESTDIR"
unzip -d "$DESTDIR" "$FILENAME"
;;
*)
Xdialog --title "Unpack" --msgbox "Extension inconnue" 7 50
;;
esac
[^] # Re: Moi j'utilise ce script ...
Posté par Colin Pitrat (site web personnel) . Évalué à 2.
Après correction à l'aide de tes scripts, c'est vrai que c'est mieux :)
[^] # Re: Moi j'utilise ce script ...
Posté par Staz . Évalué à 1.
Merci d'avance
[^] # Re: Moi j'utilise ce script ...
Posté par Colin Pitrat (site web personnel) . Évalué à 2.
DIRNAME="$(dirname "$@")"
FILENAME="$(basename "$@")"
TYPE=`echo $FILENAME | sed 's/tar\.gz$/tgz/g' | sed 's/tar\.bz2$/tbz2/g' | sed 's/.*\.//g'`
EXTENSION=`echo $FILENAME | sed 's/.*\.//'`
if [ "$EXTENSION" = "bz2" ] || [ "$EXTENSION" = "gz" ]
then
EXTENSION="tar.$EXTENSION"
fi
DESTDIR="$(basename "$@" .$EXTENSION)"
cd "$DIRNAME"
case "$TYPE" in
"zip")
DIRTEST=`unzip -lqq "$FILENAME" | awk '{print $4}' | sed -e 's,\/.*,,' | sort | uniq | wc -l`
if [ $DIRTEST = "1" ]; then
unzip "$FILENAME"
else
unzip -d "$DESTDIR" "$FILENAME"
fi
;;
"tar")
DIRTEST=`tar -tvf "$FILENAME" | awk '{print $6}' | sed -e 's,\/.*,,' | sort | uniq | wc -l`
if [ $DIRTEST = "1" ]; then
tar xf "$FILENAME"
else
mkdir "$DESTDIR"
tar xf "$FILENAME" -C "$DESTDIR"
fi
;;
"tbz2")
DIRTEST=`tar tvjf "$FILENAME" | awk '{print $6}' | sed -e 's,\/.*,,' | sort | uniq | wc -l`
if [ $DIRTEST = "1" ]; then
tar xjf "$FILENAME"
else
mkdir "$DESTDIR"
tar xjf "$FILENAME" -C "$DESTDIR"
fi
;;
"tgz")
DIRTEST=`tar tvzf "$FILENAME" | awk '{print $6}' | sed -e 's,\/.*,,' | sort | uniq | wc -l`
if [ $DIRTEST = "1" ]; then
tar xzf "$FILENAME"
else
mkdir "$DESTDIR"
tar xzf "$FILENAME" -C "$DESTDIR"
fi
;;
"xpi")
mkdir "$DESTDIR"
unzip -d "$DESTDIR" "$FILENAME"
;;
"rar")
DIRTEST=`unrar vb "$FILENAME" | sed -e 's,\/.*,,' | sort | uniq | wc -l`
if [ $DIRTEST = "1" ]; then
unrar "$FILENAME"
else
unrar "$FILENAME" "$DESTDIR"
fi
;;
*)
Xdialog --title "Unpack" --msgbox "Extension inconnue" 7 50
;;
esac
# Astuces
Posté par golum . Évalué à 4.
[^] # Re: Astuces
Posté par golum . Évalué à 1.
Dans un journal, l'info va être perdue dans les limbes de l'historique alors qu'elle sera toujours accessible dans le classement des astuces.
[^] # Re: Astuces
Posté par jikao . Évalué à 1.
# Pour décompresser
Posté par eMerzh (site web personnel) . Évalué à 3.
# libarchive + bsdtar
Posté par Bapt (site web personnel) . Évalué à 4.
- tar
- tar.gz
- tar.bz2
- tar.Z
- cpio
- cpio.gz
- cpio.bz2
- cpio.Z
- zip
- iso (iso9660)
donc pour la décompression : une commande unique : tar xf :) et pour lister tar tf quelque soit le format supporté :)
plus d'info ici : http://people.freebsd.org/~kientzle/libarchive/
liste des formats supportés : http://people.freebsd.org/~kientzle/libarchive/libarchive-fo(...)
pour l'autodétection du format de compression du tar : gz ou bz2 ou rien, je crois que les derniers gnu tar le font aussi.
bsdtar est disponible chez tout les bon revendeurs :
tous les bsd récents :)
debian à partir de testing :
http://packages.debian.org/cgi-bin/search_packages.pl?keywor(...)
gentoo : http://packages.gentoo.org/search/?sstring=bsdtar
Pour les autres, je vous laisse chercher.
[^] # Re: libarchive + bsdtar
Posté par jikao . Évalué à 1.
Parcontre l'idée est que le script marche idéalement partout sans rien ajouter au system donc c'est embettant d'utiliser des choses non standards.
[^] # Re: libarchive + bsdtar
Posté par un_brice (site web personnel) . Évalué à 2.
[^] # Re: libarchive + bsdtar
Posté par Maz (site web personnel) . Évalué à 1.
http://www.nongnu.org/atool/
# ça existe déjà
Posté par alice . Évalué à 3.
"aunpack machin.zip" a pour effet d'extraire les fichiers dans le répertoire machin s'il y a plusieurs répertoires/fichiers à la racine de l'archive ou dans le dossier courant s'il y a un seul répertoire racine dans l'archive.
[^] # Re: ça existe déjà
Posté par jikao . Évalué à 1.
# avec l'interface graphique
Posté par bsheep . Évalué à 2.
Si l'archive contient plusieurs fichiers il va alors créer un répertoire <nomarchive>_FILES et les mettre dedans.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.