Create a tar archive of the current directory without preceding period

When I do the following:

tar czvf ../myarchive.tar.gz ./

I get a single (annoying) root folder in my tar archive:

annoying

How do I remove this awful period when creating the archive?

Asked By: Naftuli Kay

||

The dot appears because tar creates the path structure the way you give in the arguments. So as you have given . as the source, the archive also is created in the same structure.

You can try this (note: this won’t match hidden files):

tar -czvf ../myarchive.tar.gz *

Updating with information from the n.st’s comment and zhoux’s answer

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./
Answered By: beginer

You don’t.

name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"

(Note: this doesn’t work if your shell has current directory symbolic link tracking turned on and the current directory is accessed via a symbolic link.)

Yes, this isn’t what you asked, but this is what you should do. Archives that expand a lot of files in the current directory are annoying: it puts the burden of creating a target directory for the file on each person who unpacks the archive, andĀ if they accidentally unpack them in a non-empty directory, it’s hard to clean up. Most of the time, an archive should create a single toplevel directory whose name is the base name of the archive.

better add ^ before the preceding .

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

OR, all “/” in the full pathname inside the archive will be removed unless “/” is the end of the full pathname.

Answered By: zhoux
Categories: Answers Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.