জিপ: আর্গুমেন্টের তালিকাটি বেশ দীর্ঘ (সামগ্রিকভাবে ৮০.০০০ ফাইল)


14

আমার একাধিক জিপ ফাইলগুলিতে 80.000 ফাইল সংকোচনের প্রয়োজন। এই হুকুমটি আমি ব্যবহার করি:

zip -s 200M photos_test/*

তবে আমি নিম্নলিখিত ত্রুটি পেয়েছি:

-bash: /usr/bin/zip: Argument list too long

ম্যানুয়ালি ফোল্ডার ফাইলগুলি বিভক্ত করার পাশাপাশি, সমস্যাটি সমাধান করার জন্য আমি কী করতে পারি?

ধন্যবাদ


ত্রুটির -bash: /usr/bin/zip: Argument list too longক্ষেত্রে হতে পারে: 1- -rস্যুইচ ব্যবহার না করার কারণে , 2- সংরক্ষণাগারের জন্য খুব বেশি ফাইল রয়েছে। সুতরাং প্রথম ক্ষেত্রে @ মাদুরের উত্তরটি সত্য এবং দ্বিতীয় ক্ষেত্রে @ ইগনাসিওভাস্কেজ-আব্রামের উত্তরটি সত্য।
shgnInc

উত্তর:


14

আপনি যদি পুরো ডিরেক্টরিটি চান, আপনি কেবল -rস্যুইচটি ব্যবহার করতে পারেন:

zip -r -s 200M myzip photos_test

এটি photos_testযদিও সমস্ত সাব ডিরেক্টরি ডিরেক্টরি অন্তর্ভুক্ত করা হবে ।


আপনার পরামর্শ অনুসারে আমি কাজটি করেছি এবং আমার কাছে একটি ছোট মাইজিপ.জিপ (7 এমবি) এবং বিভাগগুলি (প্রতিটি 200 এমবি) রয়েছে। যাইহোক, আমি সামগ্রীটি আনজিপ করতে পারি না, আমি আনজিপ ইউনিক্স মাইজিপ.জিপ চালাচ্ছি তবে আমি "খারাপ জিপফিল অফসেট (lseek)" পেয়েছি। তদ্ব্যতীত, আমি তাদের উইন্ডোজ পরিবেশেও নিষ্কাশন করতে হবে এবং আমার কাছে কেবল আমার ধারণা উইন্ডোজ 7 এক্সট্র্যাক্টর রয়েছে।
aneuryzm

এগুলি বিভিন্ন প্রশ্ন, এর জন্য আরও একটি প্রশ্ন খুলুন (রেফারেন্সের জন্য এটির সাথে লিঙ্ক করুন)। নিশ্চিত হয়ে নিন যে আপনি উত্পন্ন জিপ ফাইলগুলির নাম পোস্ট করেছেন (সেগুলির সবকটি নয়, তবে প্রথমে কমপক্ষে এবং সর্বশেষে সর্বশেষ) এবং আপনি যে সঠিক কমান্ড লাইন ব্যবহার করেন সেগুলি পোস্ট করুন
মাদুর

9

সমস্যাটি "*" এর প্রসারিত বলে মনে হচ্ছে। ফোল্ডারের নাম বা "।" ব্যবহার করুন:

আপনি যদি জিপের মধ্যে মূল ফোল্ডারটি অন্তর্ভুক্ত করতে চান:

zip -r my.zip folder_with_80k_files

আপনি যদি জিপের অভ্যন্তরে মূল ফোল্ডারটি অন্তর্ভুক্ত করতে না চান:

cd folder_with_80k_files
zip -r my.zip .

5
find photos_test/ -mindepth 1 -maxdepth 1 | zip -@ -s 200M

3
আপনার find . -mindepth 1 -maxdepth -name '*.json' | zip {YOURZIPFILENAME}.zip -@বিভক্ত হওয়ার প্রয়োজন নেই এবং এক্সটেনশন দ্বারা ফাইলগুলি নির্বাচন করতে চাইলে ব্যবহার করুন।
ড্যানিয়েল সোকলোভস্কি

3

ls photos_test | zip -s 200M -@ photos

  • -@স্টিডিনের থেকে জিপ ফাইলগুলির একটি তালিকা পড়তে বাধ্য করবে
  • |ইচ্ছা পাইপ একটি আউটপুট এর lsমধ্যে ইনপুট এর zipকমান্ড

man zip:

USE
⋮
   -@ file lists.  If a file list is specified as -@ [Not on MacOS], zip takes
   the  list  of  input  files from standard input instead of from the command
   line.  For example,

          zip -@ foo

   will store the files listed one per line on stdin in foo.zip.

   Under Unix, this option can be used to powerful effect in conjunction  with
   the  find (1)  command.   For example, to archive all the C source files in
   the current directory and its subdirectories:

          find . -name "*.[ch]" -print | zip source -@

   (note that the pattern must be quoted to keep the shell from expanding it).
⋮
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.