使用zip命令删除压缩包中的某个文件?(不解压),向压缩包增加文件?

分类: 365bet娱乐登陆 2026-01-31 10:40:15 作者: admin

1、删除压缩包中的文件

如何在不解压压缩包的情况下,删除压缩包中的某个文件?

下面通过一个例子,说明整个过程...

现在,在环境中存在一个压缩包(war)

[root@nccztsjb-node-01 tmp0]# ls -ltr

total 421448

-rw-r--r-- 1 root root 431560771 Mar 31 13:50 ROOT.war

[root@nccztsjb-node-01 tmp0]#

现在,要删除 WEB-INF/lib 目录下的 amqp-client-5.14.2.jar 这个文件

实现的方法:使用zip的 -d 命令

zip -d ROOT.war WEB-INF/lib/amqp-client-5.14.2.jar

执行过程:

[root@nccztsjb-node-01 tmp0]# zip -d ROOT.war WEB-INF/lib/amqp-client-5.14.2.jar

deleting: WEB-INF/lib/amqp-client-5.14.2.jar

[root@nccztsjb-node-01 tmp0]#

再次执行该命令:

[root@nccztsjb-node-01 tmp0]# zip -d ROOT.war WEB-INF/lib/amqp-client-5.14.2.jar

zip warning: name not matched: WEB-INF/lib/amqp-client-5.14.2.jar

zip error: Nothing to do! (ROOT.war)

[root@nccztsjb-node-01 tmp0]#

发现,没有找到,说明已经是被删除的了。

2、向压缩包中增加文件

在 1 中,已经把这个文件删除了,如果要向zip中增加文件,该怎么做?

[root@nccztsjb-node-01 tmp0]# ls -l

total 422024

-rw-r--r-- 1 root root 432147312 Mar 31 14:22 ROOT.war

drwxr-xr-x 3 root root 4096 Mar 31 14:31 WEB-INF

[root@nccztsjb-node-01 tmp0]# tree

.

├── ROOT.war

└── WEB-INF

└── lib

└── amqp-client-5.14.2.jar

2 directories, 2 files

[root@nccztsjb-node-01 tmp0]#

把文件 amqp-client-5.14.2.jar,放入到压缩包的WEB-INF/lib/目录中

zip -m ROOT.war WEB-INF/lib/amqp-client-5.14.2.jar

Warniing !Warniing !Warniing !

# 注意:需要在本地先建好WEB-INF/lib目录

# 然后,将jar包放入这个目录,然后才能放到压缩包的指定目录中

# 否则,就放在压缩包的根目录里面了

执行过程

[root@nccztsjb-node-01 tmp0]# zip -m ROOT.war WEB-INF/lib/amqp-client-5.14.2.jar

adding: WEB-INF/lib/amqp-client-5.14.2.jar (deflated 11%)

[root@nccztsjb-node-01 tmp0]#

[root@nccztsjb-node-01 tmp0]#

[root@nccztsjb-node-01 tmp0]# ls

ROOT.war WEB-INF

[root@nccztsjb-node-01 tmp0]# cd WEB-INF/lib/

[root@nccztsjb-node-01 lib]# ls

执行完成后,会将本地文件给删除,也就是把amqp-client-5.14.2.jar删除。