How do I untar a subdirectory into the current directory?
UnixCommand LineTarUnix Problem Overview
How to I extract a subdirectory in a tarball into the current directory?
Example, the tarball from wordpress:
wordpress/
wordpress/wp-trackback.php
wordpress/wp-config-sample.php
wordpress/wp-settings.php
wordpress/wp-rss2.php
wordpress/readme.html
wordpress/index.php
...
How do I extract everything under wordpress/
into the current directory? In otherwords, it will not create a wordpress
directory.
I've tried this with no luck:
tar xvfz latest.tar.gz wordpress -C ./
I know I can extract it normally and move it back, but I figure there has to be a way to do it in one shot.
Unix Solutions
Solution 1 - Unix
Why don't you untar normally, then just:
mv wordpress/.* .
mv wordpress/* .
rmdir wordpress
But alas, there's:
tar --strip-components=1 -zxvf wordpress.tgz
Solution 2 - Unix
Surprisingly, my tar
(GNU tar v1.16) doesn't have an option to strip initial pathname elements.
However, it seems that more recent versions sport a --strip-components=number
parameter, which will strip that many compononents from the start of the path.
If like me you are using an older tar
, and you are certain that the archive does not contain a directory or file named wordpress/wordpress
, you could always just make a symlink from wordpress
to .
, then extract as usual:
ln -s . wordpress
tar xvfz latest.tar.gz wordpress
rm wordpress