radlan
radlan

Reputation: 2563

add a directory when creating tar archive

I want to tar some files (and directories) but want to create an additional directory those files should reside in.

So for example for the following directory structure:

myproject
  + file1
  + file2
  + subdir1
    + file3

I cd into the myproject directory and want to create the tar archive

tar czf myproject.tgz --place-into-dir myproject-1.0 file2 subdir1

to receive a tar archive with the following content:

myproject-1.0
  + file2
  + subdir1
    + file3

I am searching for an option like my fictional "--place-into-dir" above. So the files should not be placed directly into the archive, but instead into an additional directory that is only created in the tar archive.

I want to avoid first creating that directory, copying all the files to that directory and then deleting them again only to create the tar archive.

Upvotes: 13

Views: 12603

Answers (2)

Anton N. Petrov
Anton N. Petrov

Reputation: 576

GNU tar has --transform option:

--transform=EXPRESSION, --xform=EXPRESSION

use sed replace EXPRESSION to transform file names

This should help you:

tar --transform 's/^myproject$/\0-1.0/' -czf myproject.tgz myproject

Upvotes: 5

kalj
kalj

Reputation: 1472

You can create a directory on the fly inside the archive using --transform:

tar czf myproject.tgz --transform 's,^,myproject-1.0/,' file2 subdir1

Upvotes: 16

Related Questions