我想使用zip
来压缩stdin的内容,例如:
echo 'foo bar' | zip > file.zip
这可行,但解压缩时,未压缩的文件名为-
我想知道如何为stdin指定文件名?
答案 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}}应该在保持文件名完整性的同时完成