Extract files contained in archive.tar.gz to new directory named archive

Update since GNU tar 1.28: use --one-top-level, see https://www.gnu.org/software/tar/manual/tar.html#index-one_002dtop_002dlevel_002c-summary

Older versions need to script this. You can specify the directory that the extract is placed in by using the tar -C option.

The script below assumes that the directories do not exist and must be created. If the directories do exist the script will still work - the mkdir will simply fail.

tar -xvzf archive.tar.gx -C archive_dir

e.g.

for a in *.tar.gz
do
    a_dir=${a%.tar.gz}
    mkdir --parents $a_dir
    tar -xvzf $a -C $a_dir
done

If modern enough GNU tar is being taken into account then this should be top answer here: https://unix.stackexchange.com/a/478341/34069

For brevity this is extract:

tar -xvf bash.html_node.tar.gz --one-top-level

It extracts archive into new directory named after archive file name.

Tags:

Tar