লিনাক্সে, একবারে একাধিক ডিরেক্টরি জিপ করার সর্বোত্তম উপায় কী হবে? [নকল]


1

এই প্রশ্নটি ইতিমধ্যে একটি উত্তর আছে:

আমি একটি ডিরেক্টরি আছে, /dir, এবং এটি কোন সাধারণ নামকরণ প্রকল্প সহ অন্যান্য ডিরেক্টরি পূর্ণ। সুতরাং /dir/EqcWTG /dir/SomeDirectoryName /dir/3435346 এবং তাই ঘোষণা।

আমি এই ডিরেক্টরিগুলির প্রতিটি একটি জিপ ফাইলে পরিণত করতে চাই। তাই মূলত আমি চালাতে চান $ zip -r directoryname.zip directoryname প্রতিটি ডিরেক্টরির মধ্যে $(pwd)

এই অর্জন করার সবচেয়ে সহজ উপায় কি হবে?

উত্তর:


3

ব্যবহার find এই কাজ করা উচিত:

find /dir -not -name "dir" -maxdepth 1 -type d -exec zip -r '{}.zip' '{}' \;

আমি কিভাবে আছে নোট /dir প্রধান হিসাবে find পথ কিন্তু আছে -not -name "dir" যাতে প্যারেন্ট ডিরেক্টরি সংরক্ষণাগার হয় না। পরবর্তী আমরা গভীরতা সীমাবদ্ধ find সঙ্গে স্ক্যান করুন -maxdepth 1 যার অর্থ find শুধুমাত্র পথ অবিলম্বে শিশুদের জন্য অনুসন্ধান করবে /dir। তারপরে, আমরা শুধুমাত্র ডিরেক্টরিগুলির সাথে কাজ করতে ভুলবেন না -type d। এবং অবশেষে আমরা ব্যবহার -exec ঐন্দ্রজালিক চালানোর জন্য zip কমান্ড যা এটি খুঁজে বার করে সমস্ত ডিরেক্টরি কম্প্রেস করবে; {} শুধু ডিরেক্টরির নাম নিজেই সমান।

আরেকটি কৌশল ব্যবহার করা হবে -mindepth 1 পরিবর্তে -not -name "dir" শুধুমাত্র পিতা বা মাতা একটি nested ডিরেক্টরি ক্ষেত্রে /dir কাঠামো যেকোনোভাবে নাম দ্বারা যায় /dir বা তার নামের অংশ হিসাবে "dir" আছে:

find /dir -mindepth 1 -maxdepth 1 -type d -execdir echo {} \;

এখন যারা জিপ আর্কাইভ তৈরি করবে যা সম্পূর্ণ বিস্তৃত হবে /dir পথ; /dir/EqcWTG, /dir/SomeDirectoryName, /dir/3435346, ইত্যাদি ... আপনি যদি একা / আপেক্ষিক জিপ আর্কাইভগুলি ব্যবহার করতে চান তবে আপনি এটি ব্যবহার করতে পারেন -execdir পরিবর্তে -exec এটার মত:

find /dir -not -name "dir" -maxdepth 1 -type d -execdir zip -r '{}.zip' '{}' \;

একই -execdir ধারণা, কিন্তু সঙ্গে -mindepth 1 পরিবর্তে -not -name "dir":

find /dir -mindepth 1  -maxdepth 1 -type d -execdir zip -r '{}.zip' '{}' \;

থেকে -execdir বাহিনী find প্রকৃত নির্দেশিকায় কাজ করার জন্য কমান্ডটি সম্পূর্ণ পাথের পরিবর্তে কিছু খুঁজে পেয়েছে - সেই কমান্ডটি একইভাবে নামযুক্ত ZIP সংরক্ষণাগার তৈরি করবে যা নামযুক্ত সম্পর্কিত ডিরেক্টরিগুলিতে বিস্তৃত হবে EqcWTG, SomeDirectoryName, 3435346, ইত্যাদি ... তবে আবার, চূড়ান্ত ব্যবহার / বিকল্পগুলি আপনি চয়ন করুন আপনার চূড়ান্ত ZIP সংরক্ষণাগারগুলির প্রয়োজনীয়তার উপর নির্ভর করে।


1
এটা বাদ দিতে ভাল হতে পারে /dir ব্যবহার করে -mindepth 1, যদি উপড্রাইরেক্টরীগুলির মধ্যে একটি পিতামাতার একই নাম থাকে।
AFH

@ এএফএইচ ভাল পরামর্শ! যোগ আমার উত্তর সম্পাদনা -mindepth 1 পিতা-মাতা ডিরেক্টরি জিপিং এড়াতে অন্য সম্ভাব্য উপায় হিসাবে।
JakeGould

1
আমি সাহায্য প্রশংসা করি। আমি আসলে গতকাল দেওয়া কমান্ড দিয়ে গিয়েছিলাম এবং সামান্য একটু সহজ হতে এটি সংশোধন করা হয়েছে। $ find * -maxdepth 1 -type d -exec zip -r {}.zip {} \; আমি যা চেয়েছিলাম ঠিক তা সম্পন্ন করে, আমি পরীক্ষা ডিরেক্টরিগুলিতে পাশাপাশি আমার বাস্তবে এটি ব্যবহার করেছি যার জন্য আমি মূলত এই প্রশ্নটি পোস্ট করেছি।
Mella

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