bash - bash 中的 zip 文件夹

标签 bash zip

我有如下文件和文件夹:

/myproject/config/1.xml
/myproject/src/1.py

我现在使用 bash 脚本像这样压缩文件:

cd myproject
zip -9 -r -q myfile.zip ./src/*
zip -9 -q myfile.zip ./config/1.xml

zip文件现在有2个文件夹,里面有1个config和1.xml,还有1个src和1.py。这就是我想要的,这 2 个文件夹在 zip 文件中处于同一级别。

现在我必须将 config 文件夹移出一层,src 文件夹保留。

/config/1.xml
/myproject/src/1.py

我可以将代码更改为以下内容:

cd myproject
zip -9 -r -q myfile.zip ./src/*
zip -9 -q myfile.zip ../config/1.xml

但是文件夹config已经和src不在同一层了。

我在这里错过了什么?

最佳答案

为了在压缩存档中构建所需的层次结构,您必须将代表此类层次结构的相对路径传递给 zip。在您的情况下, ./src../config 显示为不同的级别,这反射(reflect)在生成的存档中。为了使 configsrc 出现在同一层,您必须在脚本中添加一个额外的 cd:

cd /myproject
zip -9 -r -q /myfile.zip ./src/*
cd /
zip -9 -q /myfile.zip ./config/1.xml

关于bash - bash 中的 zip 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44062627/

相关文章:

java - 无法提取从 Java 创建的 zip 文件

python - 在函数 : cannot list zipped objects? 中调试

java - 从存档中打开文件而不进行临时解压

arrays - Bash:无法在管道右侧构建数组

当在 .bashrc 调用的单独文件中定义时,Bash 别名不起作用

arrays - 如何在 BASH 的列中输出数组的内容

bash - Bash 中 Docker 参数中的条件

c - 如何将另一个程序的输出作为管道传递到我的程序?

java - FTP zip 文件提取错误

java - 带有 Java : Is there a limit? 的 Zip 文件