উত্তর:
সুতরাং আমি যদি সঠিকভাবে বুঝতে পারি তবে আপনি কোনও নির্দিষ্ট ফোল্ডারে ফাইল এবং ফোল্ডারগুলি সংরক্ষণ করার চেষ্টা করছেন তবে মূল ফোল্ডারটি অন্তর্ভুক্ত না করে।
উদাহরণ:
/test/test.txt
/test/test2.txt
যেখানে test.txt এবং test2.txt জিপতে সংরক্ষণ করা হবে তবে পরীক্ষার / নয়
আপনি / টেস্ট / ডিরেক্টরিতে সিডি করতে পারলেন এমন কিছু চালাতে,
zip -r filename.zip ./*
যা ফাইলনেম.জিপ নামে একই ফোল্ডারে একটি সংরক্ষণাগার তৈরি করবে। বা যদি এটি ফোল্ডারের বাইরে থেকে চালানো হয় তবে আপনি চালাতে পারেন,
zip -r test.zip test/*
/ * হ'ল সেই অংশ যা পুরো ফোল্ডারের পরিবর্তে কেবলমাত্র ফোল্ডারের সামগ্রী অন্তর্ভুক্ত করে।
সম্পাদনা: ওপি একাধিক জিপ চেয়েছিল, সমাধানটি হ্যাক হ'ল কিছুটা শেষ হয়ে গেল, আমি আরও আগ্রহী যে এটি করার আরও ভাল উপায় আছে কিনা।
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
কাজ করে না। ডিরেক্টরি বাইরে থেকে এটি অর্জন করার কোন সঠিক উপায় আছে?
আপনার জিপ কমান্ডে বিকল্প -j
বা --junk-paths
বিকল্পটি ব্যবহার করুন ।
থেকে জিপ man পৃষ্ঠা :
-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).
এই আদেশ সম্পর্কে কীভাবে?
$ cd somedir ; zip -r ../zipped.zip . * ; cd ..
cd
। আশা করছিলাম আরও সুনির্দিষ্টভাবে সঞ্চিত পথটি নির্দিষ্ট করার কোনও উপায় ছিল।
আশাকরি এটা সাহায্য করবে.
(cd directory && zip -r ../out.zip .)
এটি মূল শেলটিকে একই ডিরেক্টরিতে রাখে এবং কেবল সাব-শেলের ডিরেক্টরি পরিবর্তন করে যা কমান্ডের পরে মারা যায়।