stdin into zip命令,如何指定文件名?

时间:2015-04-29 22:59:36

标签: linux zip stdin

我想使用zip来压缩stdin的内容,例如:

echo 'foo bar' | zip  > file.zip

这可行,但解压缩时,未压缩的文件名为-

我想知道如何为stdin指定文件名?

4 个答案:

答案 0 :(得分:1)

您可以做的是正常地then rename it in the zip

echo 'foo bar' | zip  > file.zip
printf "@ -\n@=filename.txt\n" | zipnote -w file.zip

答案 1 :(得分:0)

将echo输出写入所需的文件名,然后使用-m标志压缩并删除原始文件。

echo 'foo bar' > filename.txt && zip -m filename.txt.zip filename.txt

答案 2 :(得分:0)

使用fifo (命名管道)代替直接用管道输送标准输入!

argc_v

结果:

mkfifo text.txt               # create fifo
echo 'foo bar' > text.txt &   # pipe data to fifo, in background
zip --fifo file.zip text.txt  # note the `--fifo` argument to zip
rm text.txt                   # cleanup

请注意,FIFO是一个管道,硬盘上没有存储任何数据,它像“ $ unzip -l file.zip Archive: file.zip Length Date Time Name --------- ---------- ----- ---- 8 2020-11-29 12:30 text.txt --------- ------- 8 1 file ”(匿名管道)一样进行流式传输。

答案 3 :(得分:-4)

{{1}}应该在保持文件名完整性的同时完成