ফাইল সামগ্রীগুলি আনজিপ করুন, তবে সংরক্ষণাগার ফোল্ডার তৈরি না করেই


37

আমার কাছে একটি ফাইল মাইআরচিভ.জিপ রয়েছে যার মধ্যে অনেকগুলি ডিরেক্টরি, ফাইল ইত্যাদি রয়েছে যাক এই ম্যারাচাইভ.জাইপ ফাইলটি "বি" নামে পরিচিত একটি ডিরেক্টরিতে বাস করে। ঠিক আছে, যখন আমি "আনজিপ মাইআর্কাইভ.জিপ" কমান্ডটি ব্যবহার করি, সিস্টেম জিপ ফাইলের বিষয়বস্তু সহ ডিফল্টরূপে "মাইআর্কাইভ" নামে একটি ডিরেক্টরি তৈরি করে। আমি চাই না যে সিস্টেমটি এই "মাইআর্কাইভ" ডিরেক্টরিটি তৈরি করুক - আমি কেবল বিষয়বস্তুগুলি "বি" ডিরেক্টরিতে সরিয়ে নেওয়া চাই। এটা কি সম্ভব?

আমি এখন যা করছি তা হ'ল নতুন তৈরি করা ডিরেক্টরি থেকে ফাইলগুলি অনুলিপি করার জন্য একটি "সিপি" কমান্ড জারি করা হয়েছে (এই ক্ষেত্রে "মাইআর্কাইভ" থেকে "বি" তে) যেখানে আমি চাইছি সেখানে ফাইলগুলি অনুলিপি করতে হবে।


8
ডিফল্টরূপে, unzipকোনও ডিরেক্টরি তৈরি করে না। আপনার জিপ ফাইলটির সম্ভবত শীর্ষ স্তরে ডিরেক্টরি রয়েছে।
ক্রিস ডাউন

3
আপনি mvপরিবর্তে ব্যবহার করতে পারে cpmv archive/* .; rmdir archive/অথবা অনুরুপ.
frostschutz

উত্তর:


45

আমার সংস্করণটির কোনও ডিরেক্টরি তৈরি না করার বিকল্প unzipরয়েছে -j

সুতরাং

unzip -j /path/to/file.zip

zipফাইলটিতে সঞ্চিত ডিরেক্টরি কাঠামো পুনরুদ্ধার না করে বর্তমান ডিরেক্টরিতে সমস্ত ফাইল বের করে দেবে ।

আপনি যদি সংরক্ষণাগার থেকে কেবলমাত্র একটি স্তরের ডিরেক্টরি মুছে ফেলতে চান ( myarchive/dir/fileযেমন হিসাবে dir/fileনা, এক্সট্রাক্ট file), আপনি পরিবর্তে এবং এর বিকল্পটি bsdtar(যা zipফাইলগুলি ছাড়াও ফাইলগুলিকে সমর্থন করে ) ব্যবহার করতে পারে ।tar-s

bsdtar -xf /path/to/file.zip -s'|[^/]*/||'

8
-jসংরক্ষণাগারটি ব্যবহার করার সময় ডিরেক্টরি কাঠামোটি পুনরায় তৈরি করা হয় না এবং সমস্ত ফাইলগুলি নিষ্কাশন ফোল্ডারে জমা হয়। এর অর্থ সমস্ত সাবফোল্ডার বাদ দেওয়া হয়েছে। তাই আপনি যদি হবে যদি zip/A/f1, zip/A/B/f2এবং zip/A/B/C/f3আপনি F1, F2, F3 সঙ্গে একটি একক ফোল্ডারের দিয়ে শেষ হবে। আপনার কাছে বিভিন্ন সাবফোল্ডারে একই নামের ফাইল থাকলে তা মজাদার হয়ে যায়। সাধারণত আপনি কেবল শীর্ষ ফোল্ডারটি পুরো ডিরেক্টরি কাঠামোটিই ফেলে দিতে চান।
ক্রিশ্চিয়ান ভ্রাবি

3
@ ক্রিশ্চিয়ানভ্রাবি, ঠিক আমি উত্তরে যা বলছি তা ঠিক। আপনি যা বলছেন তার জন্য আমি একটি বিএসডিটার বিকল্প যুক্ত করেছি। সম্পাদনা দেখুন।
স্টাফেন চেজেলাস


1

গ্রহণযোগ্য উত্তর কীভাবে করবেন তা নির্দিষ্ট করে না, যেমন আপনি প্রশ্নে বলেছেন, আপনি যদি এখনও জিপ ফাইলগুলিতে সঞ্চিত ফোল্ডার পাথগুলি ব্যবহার না করে একটি নির্দিষ্ট ফোল্ডারে বের করতে চান তবে আপনি -jবিকল্পটি -dবিকল্পটি এইভাবে ব্যবহার করতে পারেন :

unzip -j /path/to/file.zip -d other_folder

বা আপনার ক্ষেত্রে

unzip -j myarchive.zip -d b

2
আপনি ঠিক করতে পারেন যে আপনি এটি করতে পারেন; তবে এটি উপ-ডিরেক্টরিগুলি তৈরি করবে না যাতে আপনার এখনও অন্য পদক্ষেপটি অন্তর্ভুক্ত করতে হবে; আমি নিশ্চিত যে ওপি আর্কাইভের মূল ডিরেক্টরিটিকে অন্য নামে নতুন নামকরণ করতে চায় তবে বাকী কাঠামোটি সেই ডিরেক্টরিতে রাখে।
প্রাইফটান

-1

পারফর্মিং যদি এর সমস্ত কিছুর সাথে unzip myarchive.zipএকটি ডিরেক্টরি তৈরি myarchiveকরে, তার অর্থ জিপ ফাইলটির নির্মাতা প্রকৃতপক্ষে সেই ডিরেক্টরিটিতে জিপ সম্পাদন করেছিলেন।

আপনি যা চান তা তৈরি করার একমাত্র উপায় হ'ল নির্দেশ সম্পাদনের পরে সমস্ত সামগ্রী কেবল সরিয়ে নেওয়া unzip:

[user@host]:some/path/b$ unzip myarchive.zip

[user@host]:some/path/b$ ls{ শো ডিরেক্টরিরmyarchive }

[user@host]:some/path/b$ mv myarchive/* .

[user@host]:some/path/b$ rm -R myarchive

[user@host]:some/path/b$ ls{ (সরাসরি myarchive প্রথম স্তর দেখায় b) }


1
এছাড়াও আপনি একটি প্রয়োজন mv myarchive/.* ..gitignore এবং .htaccess মত সব লুকানো ফাইল স্থানান্তর করার জন্য।
কিনজল দীক্ষিত

1
@ কিনজালডিক্সিত এটি আমার চিন্তাও ছিল; এন্টোইন আপনার উদাহরণটিতে একটি মারাত্মক ত্রুটি রয়েছে যেমন কিনজাই উল্লেখ করেছেন: কারণ আপনি ব্যবহার করছেন rm -Rএবং আপনি কোনও ব্যবহারের চিহ্ন ব্যবহার করছেন না কারণ ls -aকোনও ডট ফাইল রয়েছে কিনা তা আপনি প্রদর্শন করছেন না; এখন আপনি যখন চালান rm -Rএবং ডট ফাইল থাকে তখন কি হয় ? আপনি সেগুলি অনুলিপি করেন নি যাতে তারা হারিয়ে যায়। আপনার সত্যিকারের এটি ঠিক করা উচিত এবং পার্থক্যটি ব্যাখ্যা করা উচিত কারণ এটি এমন একটি জিনিস যা নবাগতদের অনেকটা ট্রিপ করবে; এবং এটি বিবেচনা করুন: যদি এটি সংরক্ষণাগার না থাকে তবে কী হবে? বা আর্কাইভটি সঙ্কুচিত হয়ে গেলে তারা মুছে ফেলতে কমান্ড যুক্ত করে তবে কী হবে?
প্রাইফটান

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