Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I'm used to extracting tarballs with a -xfz flag, which handles gzip and bzip2 archives.

Recently I've run into a .tar.xz file and I would like to uncompress it in one step using tar, how can I do that?

share|improve this question
2  
note you may have to install xz-utils if not already present –  Tobias Kienzler May 10 '13 at 7:04
    
here's my little script that guesses tar flags for you: gist.github.com/shime/5908634 –  shime Jul 2 '13 at 12:06
add comment

5 Answers

up vote 86 down vote accepted

Modern tar recognizes the format by itself! One command works with any supported compression method.

tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar

etc.

share|improve this answer
    
I think that's with bsdtar :) –  medigeek Feb 26 '12 at 17:46
13  
It's a feature of GNU tar. I don't know about competing implementations, but GNU tar should be the most relevant to ubuntu. gnu.org/software/tar/manual/tar.html#SEC131 –  ramslök Feb 29 '12 at 2:20
3  
if you run into tar: xz: Cannot exec: No such file or directory, install xz-utils: sudo apt-get install xz-utils –  Collin Anderson Feb 11 at 16:33
add comment

Try

tar -xJf file.pkg.tar.xz

The -J is the flag that specifically deals with .xz files.

share|improve this answer
9  
I wonder how many flags will we have in 2020. Like... 45 different compressions? Knowing tar switches is already a black-belt in Linux-fu. :/ –  Shiki Jun 7 '13 at 15:13
4  
@Shiki: That's probably why it doesn't make you specify the compression format flag anymore. (See ramslök's answer.) –  Nate C-K Oct 23 '13 at 3:37
add comment

If for some reason the tar solutions don’t work (perhaps because you’re using the OS X built-ins), try this:

unxz < file.tar.xz > file.tar

…which is equivalent to:

xz -dc < file.tar.xz > file.tar

Then use tar to untar the file.

share|improve this answer
1  
That should be constructable with a pipe. –  gerrit Mar 20 at 18:43
add comment

What about

tar -xvf package.tar.xz
share|improve this answer
add comment

Wow, that's a really good one. Was it done with 7zip on a Mac? Try this:

7z x -so file.tar.xz | tar xf -
share|improve this answer
    
Requires 7z, which isn't what he wants - he wants to do it entirely in tar. –  jrg Jan 3 '12 at 0:08
    
Yes, thanks - the "xz" got me! Well, it's one step anyway :) And tar J = tar xz, so we might even write tar xzf file.tar.xz like "normal" tar xvfz file.tar.gz. So basically no difference. No dash needed before using the switch. –  user8290 Jan 3 '12 at 0:19
    
It's almost like the answer was given in the question. :) –  user8290 Jan 3 '12 at 0:26
    
I was thrown off too because tar zxf errored out on the .xz file, I suppose just using J all the time would be the way to go. –  Jorge Castro Jan 3 '12 at 0:28
2  
Yup! The manual page is not in sync with the source: buffer.c uses -J for lzma. –  user8290 Jan 3 '12 at 0:45
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.