'Tar' o resultado de um 'find', preservando a estrutura do diretório

6

Eu quero tar todos os < em> *. txt arquivos que recebo como resultado de um encontrar comando, que existe em um diretório com uma estrutura de árvore como esta:

  • Directory_name
    • dir1
      • file1.pdf
      • file1.txt
    • dir2
      • file2.pdf
      • arquivo2.txt
    • dir3
      • file3.pdf
      • file3.txt

(os nomes dos arquivos são apenas exemplos).

Mas quero preservar a estrutura de diretórios .

Qual comando pode me dar um arquivo tar.gz com este conteúdo?

  • dir1
    • file1.txt
  • dir2
    • arquivo2.txt
  • dir3
    • file3.txt
por Kamafeather 28.11.2014 / 19:24

1 resposta

9

Você pode usar xargs para alimentar a saída de um comando como argumentos para outro:

find . -iname '*.txt' -print0 | xargs -0 tar zcvf the_tarball.tar.gz

Observe aqui que -print0 de find e -0 de xargs trabalham em conjunto para delimitar nomes de arquivos corretamente (para que nomes com espaços e tais não sejam um problema).

    
por 28.11.2014 / 19:28