我正在嘗試將解壓縮的檔案添加到現有的已壓縮資料夾中new folder.zip
。zip -r new folder.zip
添加一些解壓縮後的文件可以使用嗎?該指令會壓縮資料夾嗎?有沒有其他方法可以做到這一點?
答案1
使用更新標誌:-u
例子:
zip -ur existing.zip myFolder
此命令將壓縮並添加myFolder
(及其內容)到existing.zip
.
進階用法:
更新標誌實際上將傳入文件與現有文件進行比較,並添加新文件或更新現有文件。
因此,如果您想要新增/更新 zip 檔案中的特定子目錄,只需根據需要更新來源,然後使用該標誌重新壓縮整個來源-u
。只有更改過的檔案才會被壓縮。
如果您無法存取來源文件,可以解壓縮 zip 文件,然後更新所需的文件,然後使用該-u
標誌重新壓縮。同樣,只有更改的檔案才會被壓縮。
例子:
原始源結構
ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│ ├── file3.txt
│ ├── Logs
│ │ ├── logs1.txt
│ │ ├── logs2.txt
│ │ ├── logs3.txt
更新的來源結構
ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│ ├── file3.txt
│ ├── Logs
│ │ ├── logs1.txt
│ │ ├── logs2.txt
│ │ ├── logs3.txt
│ │ ├── logs4.txt <-- NEW FILE
用法
$ zip -ur existing.zip ParentDir
> updating: ParentDir/ChildDir/Logs (stored 0%)
> adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)
答案2
我相信您可以使用以下命令添加文件:
zip -r zipfile.zip newfile.txt newfile1.txt
zip 命令的選項-r
可讓您新增檔案。
答案3
我成功地使用了該zip
命令。與生長(-g) 選項,為了新增folder1/folder2
包含檔案fileA.txt
和 的子資料夾fileB.txt
:
zip -gr folder.zip folder1/folder2
-r
方法遞迴目錄。
根據我的理解 -g 應該增大 zip 文件,而不是創建新的 zip 文件(這對於非常大的 zip 存檔可能有用)。如果出現問題,您可以先嘗試使用(例如)在folder.zip中建立子資料夾:
zip -g folder.zip folder1
zip -g folder.zip folder2
答案4
如果您的 zip 檔案在同一位置有很多文件,並且您想要將它們全部複製到存檔中,您可以執行以下操作:
zip -ur zipfile.zip !(zipfile.zip)
這將使用除 zip 檔案本身之外找到的所有檔案-u
遞歸(選項)來更新您的 zip 檔案(選項)(是 zip 檔案的否定)-r
!
然後,您可以按照上述相同的規則簡單地刪除除 zip 檔案之外的所有檔案:
rm !(zipfile.zip)