Encontrei a resposta, foi tão simples, grep para o resgate:
wget https://github.com/paulp/sbt-extras/tarball/master -O sbt-extras.tar.gz
tar --strip-components=1 -xf 'sbt-extras.tar.gz' -O | grep sbt > sbt
Estou tentando escrever um script que faça o download de um tarball do github e extraia um único arquivo dele .
No entanto, o diretório de nível superior dentro do tarball tem alguns caracteres aleatórios, o que acho que mudam quando o repositório / tarball é atualizado, dificultando a especificação confiável do caminho para o arquivo que eu quero extrair.
Isso funciona:
wget https://github.com/paulp/sbt-extras/tarball/master
tar --strip-components=1 -xf 'paulp-sbt-extras-d6c7222.tar.gz' 'paulp-sbt-extras-d6c7222/sbt'
Mas eu quero algo assim:
wget https://github.com/paulp/sbt-extras/tarball/master -O sbt-extras.tar.gz
tar --strip-components=1 -xf 'sbt-extras.tar.gz' '[generic tld placeholder]/sbt'
Basicamente eu quero substituir todos os caracteres gerados aleatoriamente por algo genérico, então não preciso editar o script a qualquer momento que os caracteres aleatórios mudam.
Pensei em escrever a saída do tar como padrão e, em seguida, em algo que pudesse pegar apenas o arquivo sbt e descartar o resto, mas não tenho certeza de qual ferramenta usar para isso:
wget https://github.com/paulp/sbt-extras/tarball/master -O sbt-extras.tar.gz
tar --strip-components=1 -xf 'sbt-extras.tar.gz' -O - | [grab the sbt file, write it, and discard everything else]
Alguma idéia?
Encontrei a resposta, foi tão simples, grep para o resgate:
wget https://github.com/paulp/sbt-extras/tarball/master -O sbt-extras.tar.gz
tar --strip-components=1 -xf 'sbt-extras.tar.gz' -O | grep sbt > sbt