Como extrair um tgz que consiste em muitos arquivos presentes em várias subpastas para outro diretório (ubuntu linux)

0
current directory
            ├──Folder1
                ├── sub_folder1
            ├──Folder2
                ├── sub_folder21
                ├── sub_folder22
                      ├── sub_folder221
            ├──Folder3
                ├── sub_folder31
            ├──Folder4
                ├── sub_folder41
            ├──Folder5
                ├── sub_folder51

Dada a hierarquia de subpastas da pasta acima, que foi compactada em um arquivo tgz, preciso extrair todos os arquivos presentes em quaisquer subpastas de pastas em um único diretório de saída.
Na verdade, todos os arquivos existem no caminho mais profundo de cada combinação de subpastas de pastas. por exemplo, em sub_folder1, sub_folder2, sub_folder221, etc. Eu tentei com o seguinte:

find . -name '*.tar.gz' -execdir tar -xzvf '{}' \;

... mas que gera a hierarquia exata de arquivos e subpastas, quando eu preciso de todos os arquivos em todas as subpastas, para serem extraídos para apenas uma pasta de saída /path/to/one/folder

    
por cezudun 11.10.2018 / 17:09

1 resposta

1

O execdir é exatamente o comando errado para a sua tarefa, ele será alterado para o diretório do arquivo.

Se você usar -exec , o diretório de trabalho permanecerá o mesmo e todos os arquivos tar serão extraídos desse diretório.

Existe também a opção -C para fazer com que tar mude para esse diretório.

find . -name '*.tar.gz' -exec tar xzvfC '{}' /path/to/one/folder \;

ou

find . -name '*.tar.gz' -exec tar -xzvf '{}' -C /path/to/one/folder \;
    
por 11.10.2018 / 17:13