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

发布时间 2023-03-31 14:37:48作者: 拨云3

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删除。