উত্তর:
আপনার প্রয়োজনীয়তা বিবেচনা করে এই ছোট স্ক্রিপ্টটি আপনার সেরা বিকল্প বলে মনে হচ্ছে:
cd directory
for dir in */
do
base=$(basename "$dir")
tar -czf "${base}.tar.gz" "$dir"
done
এটি সঠিকভাবে তাদের নামে স্পেস সহ ডিরেক্টরি পরিচালনা করে।
এটি সম্পর্কে: find * -maxdepth 0 -type d -exec tar czvf {}.tar.gz {} \;
ব্যাখ্যা: আপনি বর্তমান ডিরেক্টরিতে সমস্ত আইটেম সন্ধান চালান। ম্যাক্সডেপথ 0 এটি প্রদত্ত আর্গুমেন্টের চেয়ে কম কোনও সংকেত দেয় না। (এই ক্ষেত্রে *, বা আপনার বর্তমান ডিরেক্টরিতে থাকা সমস্ত আইটেম) "-প্রকার" এর সাথে 'ডি' যুক্তি কেবল ডিরেক্টরিগুলির সাথে মেলে। তারপরে আর যাই হোক না কেন ম্যাচেই ট্যুর রান করে। (file the ম্যাচিং ফাইল দ্বারা প্রতিস্থাপন করা হয়)
for dir in `find * -maxdepth 0 -type d`; do tar -cvzf ${dir}.tar.gz ${dir}; done
এটি ব্লাহ নামে একটি ডিরেক্টরিতে প্রতিটি ফাইলের জন্য blah.tar.gz নামে একটি ফাইল তৈরি করবে।
$ cd directory
$ for dir in `ls`; do tar -cvzf ${dir}.tar.gz ${dir}; done
আপনি যদি ডিরেক্টরিতে কেবল ডিরেক্টরিগুলির চেয়ে বেশি (যেমন ফাইলগুলিও হন, যেমন ls ডিরেক্টরিতে সমস্ত কিছু ফিরিয়ে দেবে), তবে এটি ব্যবহার করুন:
$ cd directory
$ for dir in `find . -maxdepth 1 -type d | grep -v "^\.$" `; do tar -cvzf ${dir}.tar.gz ${dir}; done
গ্রেপ-ভি বর্তমান ডিরেক্টরিটি বাদ দেয় যা find
কমান্ডটিতে ডিফল্টরূপে প্রদর্শিত হবে।
for dir in *