Search code examples
pipestdintarpipeline

How to extract tar archive from stdin?


I have a large tar file I split. Is it possible to cat and untar the file using pipeline.

Something like:

cat largefile.tgz.aa largefile.tgz.ab | tar -xz

instead of:

cat largefile.tgz.aa largfile.tgz.ab > largefile.tgz
tar -xzf largefile.tgz

I have been looking around and I can't find the answer. I wanted to see if it was possible.


Solution

  • Use - as the input file:

    cat largefile.tgz.aa largefile.tgz.ab | tar zxf -
    

    Make sure you cat them in the same order they were split.

    If you're using zsh you can use the multios feature and avoid invoking cat:

    < largefile.tgz.aa < largefile.tgz.ab tar zxf -
    

    Or if they are in alphabetical order:

    <largefile.tgz.* | tar zxf -