How to extract all tar.gz files present in multiple folders at a time to another directory?

There are many folders in my current directory. Each folder has a tar.gz file. To extract the tar.gz file I need to be inside each folder and run the following command every time.

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

Inside my current directory it looks like below:

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

To extract all at a time I tried like this

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

This gave me an error:

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 

1 Answer

Use find and execute a command on each found file, in the directory of that file:

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

The -execdir option executes tar from within the folder of the found file, and {} will be replaced by the tarfile's name.

See the find documentation for more info.

6

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like