Por que todos os votos negativos? Existem mais opções do que apenas -C (e talvez a versão dele não forneça isso).
Alfe 23/08/2013
2
Stack Overflow é um site para perguntas sobre programação e desenvolvimento. Esta questão parece estar fora de tópico, porque não se trata de programação ou desenvolvimento. Consulte Quais tópicos posso perguntar aqui na Central de Ajuda. Talvez o Superusuário ou o Unix e Linux Stack Exchange sejam um lugar melhor para perguntar.
JWW
@jww Enquanto vejo o seu ponto, também temos tags nomeadas tare gzem torno deste fórum. A extração de um tarball em um diretório específico pode muito bem fazer parte de um script shell e, portanto, parte da programação. Eu acho que esse tipo de pergunta pode ser feita em qualquer fórum então.
Alfe
Respostas:
319
Você pode usar a opção -C(ou --directoryse preferir opções longas) para fornecer o diretório de destino de sua escolha, caso esteja usando a versão Gnu do tar. O diretório deve existir:
mkdir foo
tar -xzf bar.tar.gz -C foo
Se você não estiver usando um recurso tarcapaz de extrair para um diretório específico, poderá simplesmente cdentrar no diretório de destino antes da chamada tar; então você terá que fornecer um caminho completo para o seu arquivo, é claro. Você pode fazer isso em um subshell de escopo para evitar influenciar o script ao redor:
mkdir foo
(cd foo; tar -xzf ../bar.tar.gz) # instead of ../ you can use an absolute path as well
Ou, se nem um caminho absoluto nem um caminho relativo para o arquivo morto for adequado, você também poderá usá-lo para nomear o arquivo morto fora do subshell de escopo:
Você pode usar o loop for para descompactar vários arquivos .tar.gz em outra pasta. O código a seguir utilizará / destination / folder / path como argumento para o script e desmarcará todos os arquivos .tar.gz presentes no local atual em / destination / folder / path.
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
egz
em torno deste fórum. A extração de um tarball em um diretório específico pode muito bem fazer parte de um script shell e, portanto, parte da programação. Eu acho que esse tipo de pergunta pode ser feita em qualquer fórum então.Respostas:
Você pode usar a opção
-C
(ou--directory
se preferir opções longas) para fornecer o diretório de destino de sua escolha, caso esteja usando a versão Gnu dotar
. O diretório deve existir:Se você não estiver usando um recurso
tar
capaz de extrair para um diretório específico, poderá simplesmentecd
entrar no diretório de destino antes da chamadatar
; então você terá que fornecer um caminho completo para o seu arquivo, é claro. Você pode fazer isso em um subshell de escopo para evitar influenciar o script ao redor:Ou, se nem um caminho absoluto nem um caminho relativo para o arquivo morto for adequado, você também poderá usá-lo para nomear o arquivo morto fora do subshell de escopo:
fonte
ou, com alcatrão GNU
fonte
gzip
caso o alcatrão não entenda os arquivos compactados.Extrai myArchive.tar para / destinationDirectory
Comandos:
fonte
Você pode usar o loop for para descompactar vários arquivos .tar.gz em outra pasta. O código a seguir utilizará / destination / folder / path como argumento para o script e desmarcará todos os arquivos .tar.gz presentes no local atual em / destination / folder / path.
fonte