Info-Zipで既存のzipファイルを更新するのではなく上書きする方法


28

tarと同じように新しいzipファイルを入手するには、次のように実行する必要がありますか。 rm foo.zip 実行前 zip

$ mkdir foo; touch foo/bar
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/bar (stored 0%)
$ rm foo/bar; touch foo/baz
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/baz (stored 0%)
$ unzip -l foo.zip
Archive:  foo.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2011-10-27 07:49   foo/
        0  2011-10-27 07:49   foo/bar
        0  2011-10-27 07:49   foo/baz
---------                     -------
        0                     3 files

回答:


29

「ファイル同期」には-FSオプションを使用してください。

zip -FSr foo.zip foo

これにより、フォルダ内の新しいファイルがzipに追加され、フォルダ内にないファイルがzipから削除されます。


どのバージョンのzipにこのオプションがありますか?私のzipコマンドは "-S"を認識しません
Jayan

2
スイッチは -FS ではない -F そして -S 一緒に。これは少なくともzip 3.0以降にあります。チェック man zip
Paul

"new file"はどのように定義されますか?ファイルサイズの変更、日付の変更、両方?ちょっと興味があるんだけど
Moseleyi

0

を使用する代わりに -FS オプション(または古いZIPファイルを削除する)、そして文字通り 上書きする 既存のZIPファイルは、尋ねることです zip 標準入力に出力し、選択したファイルに出力をリダイレクトします。

zip -r - foo >foo.zip

foo.zipが存在する場合は、シェルリダイレクトによって上書きされます。つまり、毎回100%の割合で新しいZIPファイルが新しく作成されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.