Rename Directory Name Before tar Happens Rename Directory Name Before tar Happens bash bash

Rename Directory Name Before tar Happens


Which tar?

GNU Tar accepts a --transform argument, to which you give a sed expression to manipulate filenames.

For example, to rename during unpacking:

tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/

BSD tar and S tar similarly have an -s argument, taking a simple /old/new/ (not a general sed expression).


For mac works -s flag.

Rename on compress:

tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*

Rename on extract:

tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/


Late to to the party but here's my time-proven approach to this. When I have a tar file that extracts to a top level directory name I don't like, I solve it by creating the directory name I do like and then using tar with the -C and --strip-component options.

mkdir your-dir && tar -zxvf my-dir.tar.gz -C your-dir --strip-components=1

The -C extracts as if in the directory you specify while the --strip-component says to ignore the first level stored in the tarfile's contents.

At first glance this approach is perhaps less elegant than the sed-style solution given by others, but I think this way does have some merit.