Como extrair todos os arquivos tar.gz presentes em várias pastas de uma vez para outro diretório?

1

Existem muitas pastas no meu diretório atual. Cada pasta tem um arquivo tar.gz. Para extrair o arquivo tar.gz eu preciso estar dentro de cada pasta e executar o seguinte comando toda vez.

tar xvzf tar.gz -C /path/to/targetdirectory

Dentro do meu diretório atual, segue abaixo:

   current directory
            ├──Folder1
                ├── A.tar.gz
            ├──Folder2
                ├── B.tar.gz
            ├──Folder3
                ├── C.tar.gz
            ├──Folder4
                ├── D.tar.gz
            ├──Folder5
                ├── E.tar.gz

Para extrair tudo de uma vez eu tentei assim

tar xvzf */*.tar.gz -C /path/to/targetdirectory

Isso me deu um erro:

tar: Folder1/A.tar.gz: Not found in archive
tar: Folder2/B.tar.gz: Not found in archive
tar: Folder3/C.tar.gz: Not found in archive
tar: Folder4/D.tar.gz: Not found in archive
tar: Folder5/E.tar.gz: Not found in archive
    
por beginner 27.03.2018 / 14:59

1 resposta

1

Use find e execute um comando em cada arquivo encontrado, no diretório desse arquivo:

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

A opção -execdir executa tar de dentro da pasta do arquivo encontrado, e {} será substituído pelo nome do tarfile.

Consulte a find documentação para obter mais informações.

    
por 27.03.2018 / 15:16