L'option -t permet de lister le contenu de l'archive:
tar -tvf archive.tar # Equivalent tar --list --verbose --file=archive.tar
Par défaut le tar est extrait dans le répertoire courant, l'option -C ou --directory permet de définir dans quel répertoire sera extraite l'archive:
tar -C /path/to/target/directory -xvf archive.tgz
Il peut être intéressant de décompresser une archive sans tenir compte de certains répertoires parents.
L'archive test.tar.bz2 a le contenu suivant:
tar -tvf mon_prog.tar.bz2 drwxrwxr-x yoann/yoann 0 2020-04-16 09:43 opt/mon_prog/ -rw-rw-r-- yoann/yoann 8 2020-04-16 09:43 opt/mon_prog/README.txt -rwxr-xr-x yoann/yoann 11 2020-04-16 09:43 opt/mon_prog/mon_script.sh
Si on décompresse directement cette archive dans le répertoire /usr/local/ par exemple, l'arborescence ./opt/mon_prog/ sera recréée, on obtiendra donc
/usr/local/opt/mon_prog/ ├── mon_script.sh └── README.tx
Pour décompresser les fichier dans /usr/local/ sans tenir compte du dossier de plus haut niveau:
tar -xjvf test.tar.bz2 --directory=/usr/local/ --strip-components=1
L'argument --strip-components permet d'agir sur les noms de fichiers à la décompression et de retirer un ou plusieurs répertoires conteneurs.
On obtient dans ce cas:
/usr/local/mon_prog/ ├── mon_script.sh └── README.tx