The goal is to read a zip file from stdin and uncompress to stdout.
Funzip works and is the solution I am looking for, the zip contains a single file, unfortunately funzip fails when the compressed file size is around 1GB or greater:
funzip error: invalid compressed data--length error
Update: I have discovered the above error may not indicate an actual error. Comparing two uncompressed files, one unzipped traditionally and the other through a pipe using funzip (with the above error written to stderr) the files are identical. I'd like to keep this open, so this can be confirmed or reported.
A related solution using python:
Unzipping files that are flying in through a pipe
However this output is directed to a file.
Best Answer
Repost of my answer:
BusyBox's
unzip
can take stdin and extract all the files to stdout. For example, when you usewget
as stdin,-p
to extract files to pipe. The dash after is to use stdin as input.You also can, (just like previous answer)
But that's just redundant of
unzip -p file.zip
.If your distro uses BusyBox by default (e.g. Alpine), just run
unzip -p -
.