You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条命令实现指定文件合并后压缩?

如何用单条命令实现指定文件合并后压缩?

这个问题我之前也踩过坑!你用管道的时候报错,是因为zip默认需要你指定要压缩的文件名,而管道传过去的是文件内容(标准输入),它不知道该把这些内容存成什么文件,所以才会提示“Nothing to do!”。这里给你几个实用的解决办法:

方法一:让zip直接读取标准输入并指定文件名(推荐)

如果你的系统用的是GNU版本的zip(大部分Linux发行版都是),可以用这个命令:

cat File2022*.txt | zip All_2022.zip - --name All_2022.txt
  • 这里的-是告诉zip从标准输入(也就是管道传过来的合并内容)读取数据
  • --name All_2022.txt是指定压缩包内这个文件的名字,这样解压后就会得到你想要的All_2022.txt,而不是默认的-

方法二:通用兼容版(无需依赖特定zip版本)

如果你的zip不支持--name参数,也可以用这条命令,虽然会临时生成中间文件但会自动删除:

cat File2022*.txt > All_2022.txt && zip All_2022.zip All_2022.txt && rm All_2022.txt

这条命令用&&把三个操作连起来,只有前一个成功才会执行下一个,最后自动删掉临时的All_2022.txt,效果和你原来的两步操作一样,但只用一条命令完成。

方法三:用进程替换简化写法

还有一种更简洁的写法,利用shell的进程替换特性,不用显式写cat:

zip All_2022.zip <(cat File2022*.txt) --name All_2022.txt

这里的<(cat File2022*.txt)会把合并后的内容当成一个临时文件传给zip,再配合--name指定文件名,效果和方法一一样。

备注:内容来源于stack exchange,提问作者bk_32

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:53:17