Streaming input and output. zip will also accept a single dash ("-") as the zip file name, in which case it will write the zip file to standard output, allowing the output to be piped to another program.
Então:
$ zip -r - foo | wc -c
Irá dizer-lhe o tamanho comprimido em bytes do diretório foo.
O 7z não pode gravar em stdout para arquivos zip.
A outra alternativa é criar um disco de memória e compactá-lo.