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