Como eu extraio todos os arquivos .htaccess de um tarball?

6

Eu quero extrair todos os arquivos .htaccess de um tarball, como posso fazer isso? Eu vejo apenas uma menção de "incluir" na página de manual de tar , que não está relacionada com uma opção para incluir apenas determinados nomes de arquivos.

Existe outra alternativa além de mencionar todos os caminhos como argumento?

    
por Lekensteyn 22.02.2012 / 17:53

5 respostas

10
O

GNU tar suporta a opção "--wildcards".

tar tvfz file.tar.gz --wildcards '*/.htaccess'
    
por 22.02.2012 / 18:08
4

Não é um único comando, mas isso funciona:

$ tar -ztvf tarball.tar.gz | grep .htaccess | awk '{print $9}'>files
$ cat files
1/.htaccess
2/.htaccess
$ tar -zxvT files -f tarball.tar.gz 
x 1/.htaccess
x 2/.htaccess
    
por 22.02.2012 / 18:14
3
tar tf tarball.tar.gz | grep '/\.htaccess$' | tar xfT tarball.tar.gz -
    
por 22.02.2012 / 22:28
1

Apenas expandindo a resposta aceita de andcoz para apontar as diferenças entre gnutar e bsdtar ...

# tar (GNU tar) 1.26
# bsdtar 2.8.4 - libarchive 2.8.4
# tested in Bash shell on Mac OS X

# only list .htaccess files from archive
bsdtar -T <(echo '*/.htaccess') -tvzf archive.tar.gz
bsdtar --include='*/.htaccess' -tvzf archive.tar.gz
gnutar --wildcards '*/.htaccess' -tvzf archive.tar.gz

# only extract .htaccess files from archive
bsdtar -T <(echo '*/.htaccess') -xvzf archive.tar.gz
bsdtar --include='*/.htaccess' -xvzf archive.tar.gz
gnutar --wildcards '*/.htaccess' -xvzf archive.tar.gz
    
por 05.03.2012 / 11:29
0

Usando o pax , o arquivo padrão POSIX utilitário :

pax -r -s ':/\.htaccess:/.htaccess:' -s ':^\.htaccess:.htaccess:' -s ':.::'

(isto é, extrai arquivos% raiz .htaccess e raiz .htaccess arquivos como estão; suprima todos os outros arquivos)

    
por 23.02.2012 / 03:02