How to untar an archive without the root folder, but keeping the full hierarchy inside it?
If I’ve got a .tar
archive, and when I extract it, it gives me a single folder foo
containing some more stuff, like this:
foo/
something.txt
another.txt
bar/
something-else.txt
Is there a way I can modify the .tar
command to “skip” the root folder (foo
in this case) and just extract all the contents of that folder directly into my cwd like this:
something.txt
another.txt
bar/
something-else.txt
Solution 1:
Easy. Just use --strip-components=1
on the archive like this:
tar -xf archive.tar --strip-components=1
And as explained in the official tar
man page:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
With the logic being that if a path consists of foo/something.txt
then the first “component” of that path would be foo/
so --strip-components=1
would effectively drop the foo/
from the path foo/something.txt
.