tar -tf filename.tar
folder1/file
folder1/name
[...]
Eu gostaria de extrair o arquivo e o nome para, folder2 . Isso pode ser feito como uma linha?
tar -tf filename.tar
folder1/file
folder1/name
[...]
Eu gostaria de extrair o arquivo e o nome para, folder2 . Isso pode ser feito como uma linha?
Respostas:
Use -C
e --strip-components
(veja man tar
).
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
O -C
sinalizador supõe que um diretório já esteja no local para que o conteúdo do arquivo tar possa ser expandido nele. daqui o mkdir FOLDER
.
A --strip-components
flag é usada quando um arquivo tar naturalmente se expande para uma pasta, digamos, como o github, onde é exemplo de repo-name-master
pasta. É claro que você não precisaria da pasta de primeiro nível gerada aqui, portanto, a --strip-components
configuração 1
removeria automaticamente a primeira pasta para você. Quanto maior o número for definido, as pastas aninhadas mais profundas serão removidas.
Você também pode usar a --transform
opção para um pouco mais de flexibilidade. Ele aceita qualquer operação de substituição.
Por exemplo, é assim que eu extraio um tarball do Linux para um novo diretório para poder aplicar um patch:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
. Não localizou--strip-components
. nice one