Como mesclar arquivo ao desarquivar o tarball?

0

Eu baixei um tarball ( abc.tar.gz ) que tem uma pasta raiz ( abc ) e várias subpastas ( a , b , c , etc). E eu tenho uma pasta chamada Target na máquina (macbook pro), com várias subpastas ( a , b , c , etc) também.
Agora eu quero desarquivar o tarball para Target pasta e auto mesclar as subpastas. Como posso consegui-lo? Tentei desarquivá-lo em Target , mas resulta de uma subpasta ( abc ) em Target :

cp abc.tar.gz ~/Target
cd ~/Target
tar xzvf abc.tar.gz

Resultado:

Target/abc/a
Target/abc/b
Target/a
Target/b

O que eu quero é:

Target/a    # auto merged
Target/b    # auto merged

Obrigado antecipadamente!

    
por Kjuly 26.12.2011 / 09:06

1 resposta

1

Infelizmente, tar sempre descompactará o caminho completo arquivado, mesmo quando você solicitar apenas um único recurso dentro de um caminho de subpasta. por exemplo:

$ tar -x abc/a -zvf abc.tar.gz 

descompactará apenas a subpasta a , mas o diretório pai abc ainda será criado.

Do diretório de destino que você pode fazer

$ for d in 'ls abc'; do cp -rf abc/$d/* ./$d/; done

para copiar as pastas de arquivamento em pastas pré-existentes com o mesmo nome na pasta atual Target

ou simplesmente

$ cp -rf abc/* ./

para criar todas as pastas de arquivo em ~/Target . Se uma pasta chamada, digamos, 'foo' existir em abc e Target , o conteúdo de abc/foo será copiado para Target/foo . Esteja ciente, no entanto, que no nível de arquivo abc/foo/bar.txt sobrescreverá Target/foo/bar.txt sem aviso ou aviso.

    
por 26.12.2011 / 11:01