Je voudrais décompresser une archive par ex. "tar123.tar.gz" dans le répertoire/myunzip/tar123/"à l'aide d'une commande Shell.
tar -xf tar123.tar.gz décompressera les fichiers mais dans le même répertoire que celui dans lequel je travaille.
Si le nom de fichier était "tar233.tar.gz", je veux qu'il soit décompressé dans /myunzip/tar233.tar.gz ", le répertoire de destination serait donc basé sur le nom de fichier.
Est-ce que quelqu'un sait si la commande tar peut le faire?
Avec Bash et GNU tar:
file=tar123.tar.gz
dir=/myunzip/${file%.tar.gz}
mkdir -p $dir
tar -C $dir -xzf $file
tar -xzvf filename.tar.gz -C destination_directory
Vous pouvez changer de répertoire avant d'extraire avec le -C
flag, mais le répertoire doit déjà exister. (Si vous créez des répertoires spécifiques à un fichier, je vous déconseille fortement de les appeler foo.tar.gz
- l'extension implique qu'il s'agit d'un fichier d'archive mais qu'il s'agit en fait d'un répertoire. Cela va conduire à la confusion.)
Essayer
file=tar123.tar.gz
dir=/myunzip/$(basename $file .tar.gz) # matter of taste and custom here
[ -d "$dir" ] && { echo "$dir already exists" >&2; exit 1; }
mkdir "$dir" && ( gzip -d "$file | ( cd "$dir" && tar xf - ) )
Si vous utilisez GNU tar, vous pouvez également lui donner une option -C "$dir"
ce qui entraînera son changement dans le répertoire avant l'extraction. Mais le code ci-dessus devrait fonctionner même avec un goudron de l'âge du bronze.
Avertissement: aucun des codes ci-dessus n'a été testé.