অভিভাবক ডিরেক্টরি অন্তর্ভুক্ত না করে একটি সংরক্ষণাগার জিপ করুন


30

আমি যেমন ডিরেক্টরি ট্রিতে অনেকগুলি ফোল্ডার জিপ করতে চাই

V-
 something.txt
 folder
 folder
 g.jpg
 h.jar

আমি যখন এটি জিপ করার চেষ্টা করি তখন এটি ভিট ফোল্ডারের সাথে (উপ ডিরেক্টরি এবং ফাইলগুলি) পরিবর্তে একটি জিপ সংরক্ষণাগার তৈরি করা শেষ করে

আমি কীভাবে এড়াতে পারি?

উত্তর:


23

সুতরাং আমি যদি সঠিকভাবে বুঝতে পারি তবে আপনি কোনও নির্দিষ্ট ফোল্ডারে ফাইল এবং ফোল্ডারগুলি সংরক্ষণ করার চেষ্টা করছেন তবে মূল ফোল্ডারটি অন্তর্ভুক্ত না করে।

উদাহরণ:

/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;

হ্যাঁ তবে আমার কাছে প্রচুর ফাইল রয়েছে যা আমি একই জিনিসটি করি তাই এটি ক্লান্তিকর হবে তবে এমন কোনও বাশ স্ক্রিপ্ট বা এমন কোনও কিছু রয়েছে যা ডিরেক্টরিতে সমস্ত ফোল্ডারগুলির মধ্যে একই প্রক্রিয়াটি স্বয়ংক্রিয় করবে
ডামি

1
ঠিক আছে আমি স্ক্রিপ্টটি চালিয়েছি এবং এটি সংরক্ষণাগারে একটি পিতামহিত ডিরেক্টরি তৈরি করেছে আমি কেবল ফোল্ডারের সামগ্রীগুলি সংরক্ষণাগারটিতে রাখতে চাই
ডামি

1
আমার ভুল, কিছুটা মিস করলাম। একটি জে প্যারামিটার যুক্ত করেছি যা আমি স্রেফ সন্ধান করেছি, দৃশ্যত আপনি যে অংশটি চান না তা এড়িয়ে চলে। এটি চেষ্টা করুন:for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zzbomb

18
zip -r test.zip পরীক্ষা / * বাইরের থেকে জিপ ফাইলে ডিরেক্টরি হিসাবে পরীক্ষা যোগ করে
স্মিহেল

4
@ সিমিহেল যেমন বলেছে, zip -r test.zip test/*কাজ করে না। ডিরেক্টরি বাইরে থেকে এটি অর্জন করার কোন সঠিক উপায় আছে?
andrhamm

22

আপনার জিপ কমান্ডে বিকল্প -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).

এটি সঠিক উত্তর বলে মনে হচ্ছে।
মিউট্যান্ট_সিটি

3
যদিও নেস্টেড পাথ / ফোল্ডারগুলি সম্পর্কে কী?
গাইপ্যাডক

3
এটি সংরক্ষণাগারের সমস্ত ফোল্ডার বাদ দেবে এবং আপনার যদি বিভিন্ন ফোল্ডারে নকল ফাইলের নাম থাকে তবে এটি ফুরিয়ে যাবে। এটির স্থান রয়েছে তবে কেবলমাত্র আপনি যদি ফোল্ডারগুলির বিষয়ে চিন্তা করেন না এবং কেবল ফাইল চান। ওপি যা চেয়েছিল তা নয়, তবে এখনও ভাল জ্ঞান
গোবিন্দ রায়

17

এই আদেশ সম্পর্কে কীভাবে?

$ cd somedir ; zip -r ../zipped.zip . * ; cd ..

5
যদিও এটি একটি সঠিক উত্তর, আপনি নিজেকে নিশ্চিত বলে পরিচয় শোনায় না। এটি একটি সামান্য বিট ব্যাখ্যা করতেও সহায়তা করবে, আদেশটি কী করে।
নেফেন্টে

1
এটি আমার সমাধানও ছিল তবে আমি এটি অপছন্দ করি কারণ এতে জড়িত cd। আশা করছিলাম আরও সুনির্দিষ্টভাবে সঞ্চিত পথটি নির্দিষ্ট করার কোনও উপায় ছিল।
নীলস্কে

3

আশাকরি এটা সাহায্য করবে.

(cd directory && zip -r ../out.zip .)

এটি মূল শেলটিকে একই ডিরেক্টরিতে রাখে এবং কেবল সাব-শেলের ডিরেক্টরি পরিবর্তন করে যা কমান্ডের পরে মারা যায়।


আমি এটি @ আলফ্রেড ইউসির উত্তরের মন্তব্য হিসাবে যুক্ত করতে চেয়েছিলাম তবে এর পক্ষে আমার যথেষ্ট খ্যাতি নেই।
কেনেথ

যদি এটি আসলে সমস্যাটি সমাধান করে তবে এটি সমাধান হতে পারে solution
ইউফেনিউই ভিয়েহ দিদার

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