更新 linux / bash 中 zip 子文件夹中的文件

Update file in subfolder of zip in linux / bash

我正在尝试更新我的 zip,但一直存在 zip error: Nothing to do! 或子文件夹路径错误等问题。

输入: 要更新的文件 /main/zip/folder_1/file1.xml

zip 目标:/main/zip_file1.zip -> 但此 zip 包括子文件夹,如 ../sub1/file1.xml 等

预期结果:在 zip_file1.zip 中更新 file1.xml,但路径正确,例如 zip_file1.zip/sub1/file1.xml

我该怎么做?

我正在尝试这个:

zip -ur zip_file1.zip ./main/zip/folder_1/file1.xml

zip -ur zip_file1.zip '*/file1.xml' ./main/zip/folder_1/file1.xml

zip -ur zip_file1.zip '/sub1/file1.xml'./main/zip/folder_1/file1.xml

不可能使 main/zip/folder_1/file1.xml 成为 zip 存档中的 sub1/file1.xml,路径必须 相同

一个work-around是重新创建你想更新的树和文件:

mkdir sub1
ln main/zip/folder_1/file1.xml sub1/
zip -rum zip_file1.zip sub1/

ln -s main/zip/folder_1/ sub1
zip -ru zip_file1.zip sub1/
rm -f sub1

哪一个最好取决于您的上下文:

  • 使用第一个代码仅更新 main/zip/folder_1/

    的少数 select 个文件
  • 使用第二个代码更新main/zip/folder_1/

    中的所有文件和目录