Info-Zip'de güncellemek yerine mevcut zip dosyasının üzerine nasıl yazılır?


30

Katran gibi taze bir zip dosyası elde etmek için rm foo.zipçalıştırmadan önce yapmam gerekir zipmi?

$ 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

Yanıtlar:


31

"Dosya senkronizasyonu" için -FS seçeneğini kullanın

zip -FSr foo.zip foo

Bu, klasördeki yeni dosyaları zip'e ekler ve klasördeki olmayan zip dosyalarını siler.


Bu seçenek hangi zip sürümüne sahiptir? Zip
— komutum

2
Anahtarıdır -FSdeğil -Fve -Sbirlikte. Bu, en az zip 3.0 beri orada olmuştur. Kontrol edin man zip.
— Paul

"Yeni dosya" nasıl tanımlanır? Dosya boyutu değişir, tarih değiştirilebiliyor mu? Sadece merak ediyorum
— Moseleyi

Bu sadece için çalışır Zip 3.0ve çalışmaz Zip 2.32(zip paketindeki eski dosyaları kaldırmadı)
— Nabi KAZ

Yani demek -FS -ristiyorsun?
— çığ1

0

-FSSeçeneği kullanmaya (veya eski ZIP dosyasını silmeye) ve kelimenin tam anlamıyla mevcut ZIP dosyasının üzerine yazmaya bir alternatif , zipçıktıyı stdin'e göndermek ve çıktıyı istediğiniz dosyaya yönlendirmektir:

zip -r - foo >foo.zip

Eğer foo.zip varsa, kabuk yönlendirme ile değiştirilecektir, yani her seferinde zamanın% 100'ünü yeni bir ZIP dosyası alacaksınız get


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.