Centos6.5 系统
zip 命令如何删除压缩包内,某层目录下的所有文件,但不删除其本层下其余目录里的文件。
例如:
laosiji.zip
压缩结构为下:
/siji/laosiji.txt
/siji/jiazhao.txt
/siji/py/jiaoyi.txt
/siji/py/aa.txt
如何删除 laosiji.txt 和 jiazhao.txt ,但保留 /siji/py/jiaoyi.txt 和 /siji/py/aa.txt
unzip -l laosiji.zip 为列出压缩结构
zip -d laosiji.zip /siji/* 会删除 py 目录下的 jiaoyi.txt 与 aa.txt
因为项目部署频繁,且要删除的文件会不断变化,所以解压出来,删除文件再打包的方法暂不考虑。
所以请教一下。[发呆]
1
msg7086 2016-04-27 01:55:29 +08:00
不要解压。直接留在硬盘上,要部署了再打包呢?
|
2
notolddriver OP @msg7086 不明白你在说什么。
我再详细说下:压缩包 laosiji.zip 是项目编译完成后得到的包 [公司使用 Jenkins] ,需要解压到服务器上的相应目录进行部署,每次编译会生成一些配置文件 [/siji/laosiji.txt 和 /siji/jiazhao.txt] ,而我们需要保留使用原服务器上的这些文件 [配置文件] 。 以下方法因考虑到效率等其他因素暂不考虑: 1.更改编译方式,使编译时不生成新的配置文件; 2.解压后,进行删除文件操作,再覆盖部署。 |
3
cherrymill 2016-04-27 10:29:49 +08:00
考虑用 tar 么,如果考虑用 tar 的话可以动态改变归档结构
zip 的话,在 WinRAR 下可以做到,原理你可以参考 WInRAR 的执行脚本 |
4
yiyiwa 2016-04-27 17:16:54 +08:00
zip 没怎么用过,
tar 是可以按文件列表打包, zip 刚才 man 了一下,也可以的, find . -name "*.[ch]" -print | zip source -@ find 后,你可以用相关命令再去除一些。。。 |
5
notolddriver OP @cherrymill 谢谢啊,先不考虑,因为项目编译完成后得到的是 zip 包 不是 tar 包。若改成 tar 包,又要动刀编译环境配置了。
|
6
notolddriver OP @yiyiwa 你这个是按照列表打包吧,我的需求是删除包里的文件。
|
7
bp0 2016-05-01 13:19:10 +08:00
你为什么觉得“ zip -d ”命令就不是“解压出来,删除文件再打包”的呢?
|
8
notolddriver OP @bp0 zip -d laosiji.zip /siji/jiazhao.txt 删除压缩包内的 jiazhao.txt ,形成新的压缩包。
当然本质可能也就是“解压出来,删除文件再打包”,但这里的“解压出来,删除文件再打包”分两种情况。 1.zip -d 命令集成了这一系列操作。 2.zip 命令没集成这一操作,我需要把压缩文件分多个命令[1.解压 2.删除文件 3.再打成新包]。 若可以使用第一种方式完成,是不是尽量不考虑第二种呢? |
9
bp0 2016-05-01 17:22:01 +08:00
如果第一种情况确实无法满足你的要求,那么只能考虑第二种了。
但是,第二种的情况也是可以写成一个脚本自动完成的。 如果你能明确知道要删除的文件的话,"zip -d"命令还是可以满足你的需求的。 |
10
notolddriver OP @bp0 那你以为我在这里问什么。。。
|