2

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
3

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.

  • Where should I give target directory in the command? – beginner Mar 27 '18 at 13:27
  • Ok. Gave like this to get the extracted files into target directory. find . -name '*.tar.gz' -execdir tar -C /path/to/targetdirectory -xzvf '{}' \; This worked – beginner Mar 27 '18 at 14:20
  • Yep, you can specify the commands as usual within the -exec option. – slhck Mar 27 '18 at 14:30
  • hi...I have small doubt. Is there a way to give path to those...*.tar.gz files? – beginner Apr 12 '18 at 15:16
  • You can find in another directory by replacing find . with find /path/to/directory. – slhck Apr 13 '18 at 7:02

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.