Pourquoi tous les downvotes? Il y a plus d'options que juste -C (et peut-être que sa version ne le fournit pas).
Alfe
2
Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble être hors sujet car elle ne concerne pas la programmation ou le développement. Voir Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Super User ou Unix & Linux Stack Exchange seraient un meilleur endroit pour demander.
jww
@jww Pendant que je vois votre point, nous avons également des balises nommées taret gzautour dans ce forum. Extraire une archive tar dans un répertoire spécifique peut très bien faire partie d'un script shell et donc faire partie de la programmation. Je suppose que ce genre de question peut alors être posée dans l'un ou l'autre forum.
Alfe
Réponses:
319
Vous pouvez utiliser l'option -C(ou --directorysi vous préférez les options longues) pour donner le répertoire cible de votre choix au cas où vous utilisez la version GNU de tar. Le répertoire doit exister:
mkdir foo
tar -xzf bar.tar.gz -C foo
Si vous n'utilisez pas un tarcapable d'extraire vers un répertoire spécifique, vous pouvez simplement cddans votre répertoire cible avant d'appeler tar; alors vous devrez bien sûr donner un chemin complet vers vos archives. Vous pouvez le faire dans un sous-shell de portée pour éviter d'influencer le script environnant:
mkdir foo
(cd foo; tar -xzf ../bar.tar.gz) # instead of ../ you can use an absolute path as well
Ou, si ni un chemin absolu ni un chemin relatif vers le fichier d'archive ne convient, vous pouvez également l'utiliser pour nommer l'archive en dehors du sous-shell de portée:
Vous pouvez utiliser la boucle for pour décompresser plusieurs fichiers .tar.gz dans un autre dossier. Le code suivant prendra / destination / dossier / chemin comme argument du script et décompactera tous les fichiers .tar.gz présents à l'emplacement actuel dans / destination / dossier / chemin.
if [ $# -ne 1 ];
then
echo "invalid argument/s"
echo "Usage: ./script-file-name.sh /target/directory"
exit 0
fi
for file in *.tar.gz
do
tar -zxvf "$file" --directory $1
done
tar
etgz
autour dans ce forum. Extraire une archive tar dans un répertoire spécifique peut très bien faire partie d'un script shell et donc faire partie de la programmation. Je suppose que ce genre de question peut alors être posée dans l'un ou l'autre forum.Réponses:
Vous pouvez utiliser l'option
-C
(ou--directory
si vous préférez les options longues) pour donner le répertoire cible de votre choix au cas où vous utilisez la version GNU detar
. Le répertoire doit exister:Si vous n'utilisez pas un
tar
capable d'extraire vers un répertoire spécifique, vous pouvez simplementcd
dans votre répertoire cible avant d'appelertar
; alors vous devrez bien sûr donner un chemin complet vers vos archives. Vous pouvez le faire dans un sous-shell de portée pour éviter d'influencer le script environnant:Ou, si ni un chemin absolu ni un chemin relatif vers le fichier d'archive ne convient, vous pouvez également l'utiliser pour nommer l'archive en dehors du sous-shell de portée:
la source
ou, avec GNU tar
la source
gzip
au cas où le goudron ne comprend pas les archives zippées.Extrait myArchive.tar vers / destinationDirectory
Commandes:
la source
Vous pouvez utiliser la boucle for pour décompresser plusieurs fichiers .tar.gz dans un autre dossier. Le code suivant prendra / destination / dossier / chemin comme argument du script et décompactera tous les fichiers .tar.gz présents à l'emplacement actuel dans / destination / dossier / chemin.
la source