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.