すでに圧縮されている既存のフォルダーに、解凍したファイルを追加しようとしていますnew folder.zip
。 解凍したファイルを追加した後、 を使用することは可能ですかzip -r new folder.zip
? このコマンドはフォルダーを圧縮しますか? これを行うための代替手段はありますか?
答え1
更新フラグを使用します:-u
例:
zip -ur existing.zip myFolder
このコマンドは、 を圧縮してmyFolder
(およびその内容) に追加しますexisting.zip
。
高度な使用法:
更新フラグは、実際には受信ファイルと既存のファイルを比較し、新しいファイルを追加するか、既存のファイルを更新します。
したがって、zip ファイル内の特定のサブディレクトリを追加/更新する場合は、必要に応じてソースを更新し、フラグを使用してソース全体を再度 zip します-u
。変更されたファイルのみが zip されます。
ソース ファイルにアクセスできない場合は、zip ファイルを解凍し、必要なファイルを更新してから、フラグを使用して再度 zip 圧縮することができます-u
。この場合も、変更されたファイルのみが zip 圧縮されます。
例:
元のソース構造
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
-r
zip コマンドのオプションを使用すると、ファイルを追加できます。
答え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 ファイル自体 (は zip ファイルの否定)を除くすべてのファイルで、zip ファイル (-u
オプション) を再帰的に更新します (オプション)。-r
!
次に、上記と同じルールに従って、zip ファイル以外のすべてのファイルを削除するだけです。
rm !(zipfile.zip)