কীভাবে বিদ্যমান জিপ ফাইলটিকে তথ্য-জিপ আপডেট করার পরিবর্তে ওভাররাইট করা যায়?


30

টারের মতো একটি নতুন জিপ ফাইল পেতে, আমাকে 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

উত্তর:


32

"ফাইল সিঙ্ক" করতে -এফএস বিকল্পটি ব্যবহার করুন

zip -FSr foo.zip foo

এটি ফোল্ডারে জিপটিতে যে কোনও নতুন ফাইল যুক্ত করবে এবং ফোল্ডারে নেই এমন জিপ থেকে কোনও ফাইল মুছবে।


জিপের কোন সংস্করণে এই বিকল্প রয়েছে? আমার জিপ কমান্ড "-S" স্বীকৃতি দেয় না
— জয়ন

2
সুইচ -FSনা -Fএবং -Sএকসঙ্গে। অন্তত জিপ 3.0 থেকে এটি রয়েছে has চেক man zip।
— পল

"নতুন ফাইল" কীভাবে সংজ্ঞায়িত করা হয়? এর ফাইলাইজ পরিবর্তন, তারিখ সংশোধন, উভয়? কেবল কৌতূহলী
— মসলেই

এটি কেবল তার জন্য কাজ করে Zip 3.0এবং কাজ করে না Zip 2.32(জিপ প্যাকের পুরানো ফাইলগুলি সরিয়ে দেয় না)
— নবী কেএজেড

মানে -FS -r, তাই না?
— হিমস্রোত 1

0

-FSবিকল্পটি ব্যবহার করার (বা পুরানো জিপ ফাইলটি মুছে ফেলা ) বিকল্প হিসাবে এবং আক্ষরিক অর্থে বিদ্যমান জিপ ফাইলটি ওভাররাইট করা হ'ল zipস্টিডিনকে আউটপুট জিজ্ঞাসা করা এবং আউটপুটটিকে আপনার পছন্দের ফাইলটিতে পুনর্নির্দেশ করা:

zip -r - foo >foo.zip

যদি foo.zip উপস্থিত থাকে, তবে এটি শেল পুনর্নির্দেশ দ্বারা ওভাররাইট করা হবে, যার অর্থ আপনি প্রতিবার একটি নতুন নতুন জিপ ফাইল পাবেন, প্রতিবার 100% সময় 🙂


আপনি আউটপুট মানে
— স্টাডাউট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.