জিপ করা সংরক্ষণাগার থেকে প্রদত্ত ডিরেক্টরিতে কেবল একটি নির্দিষ্ট ফাইলই বের করুন


150

আমাকে জিপ ফাইল থেকে একটি একক ফাইল বের করতে হবে যা আমি জানার পথটি জানি। নিম্নলিখিত মত একটি আদেশ আছে:

unzip -d . myarchive.zip path/to/zipped/file.txt

দুর্ভাগ্যক্রমে, উপরের কমান্ডটি ফাইলটিতে পুরো পথটি বের করে এবং পুনরায় তৈরি করে ./path/to/zipped/file.txt। আমার জন্য কী কেবল কোনও নির্দিষ্ট ডিরেক্টরিতে ফাইলটি টেনে আনার কোনও উপায় আছে?

উত্তর:


130

-pবিকল্পের সাহায্যে আপনি কেবলমাত্র পাঠ্যটি স্ট্যান্ডার্ড আউটপুট থেকে বের করতে পারবেন :

unzip -p myarchive.zip path/to/zipped/file.txt >file.txt

এটি মেটাডেটা (তারিখ, অনুমতি,…) এক্সট্রাক্ট করবে না, কেবলমাত্র ফাইলের সামগ্রী। ফাইলটি পরে স্থানান্তরিত না করার সুবিধার্থে মূল্য দিতে হবে।

বিকল্পভাবে, সংরক্ষণাগারটিকে ডিরেক্টরি হিসাবে মাউন্ট করুন এবং কেবল ফাইলটি অনুলিপি করুন। সঙ্গে AVFS :

mountavfs
cp -p ~/.avfs"$PWD/myarchive.zip#"/path/to/zipped/file.txt .

অথবা ফিউজ-জিপ সহ :

mkdir myarchive.d
fuse-zip myarchive.zip myarchive.d
cp -p myarchive.d/path/to/zipped/file.txt .
fusermount -u myarchive.d; rmdir myarchive.d

2
@ টি কে কোচরান: আপনি শুধু এটি পরীক্ষা করেন না কেন? আমি প্রথম কমান্ড পরীক্ষা করেছি, এবং এটি কার্যকর হয়েছিল।
ব্যবহারকারীর অজানা

1
@ টি কে কোচেরান: জার ফাইলগুলি জিপ, সুতরাং আনজিপ এবং ফিউজ-জিপ পদ্ধতিগুলি অবশ্যই কাজ করবে। এভিএফএস পদ্ধতিটিও কাজ করে, কারণ এভিএফএস ফাইলের উপর ভিত্তি করে ফর্ম্যাটটি অনুমান করে এবং এর সম্পর্কে জানে .jar; যদি আপনার ফাইলটির আলাদা নামকরণ করা হয় তবে আপনাকে এভিএফএসের জিপ হ্যান্ডলারটি ব্যবহার করতে বলার প্রয়োজন হতে পারে, যেমন ~/.avfs$PWD/foo.apk#uzip/META-INF
গিলস

1
প্রকৃতপক্ষে, আমি একটি জিপ সংরক্ষণাগার থেকে জেআর / বাইনারি ফাইলটি বের করতে চাইছিলাম। এখনও এটি পরীক্ষা করার সুযোগ পাইনি, আপনি বাইনারি ফাইলগুলি বের করার জন্য উপরের প্রথম কমান্ডটি ব্যবহার করে কোনও সমস্যা দেখতে পাচ্ছেন?
নাফতুলি কে

2
@ টি কেকোচেরান: কোনও সমস্যা নেই, -pফাইলটি যেমন হয় তেমন বের করে ( -cপাঠ্য রূপান্তর করে)।
গিলস

2
আমি মনে করি @ মাইলসের উত্তরটি আরও মার্জিত, কারণ এর জন্য আউটপুট পুনঃনির্দেশের প্রয়োজন হয় না এবং এটি ফাইলের বৈশিষ্ট্যগুলি সংরক্ষণ করে।
gertvdijk

152
unzip -j "myarchive.zip" "in/archive/file.txt" -d "/path/to/unzip/to"

জিপড ফাইলের জন্য পুরো পথ প্রবেশ করুন, কেবল ফাইলের নাম নয়। জিপ ফাইলের মধ্যে থেকেই যেমন কাঠামোটি দেখা যায় তেমন নিশ্চিত হন।

এই ফাইল উত্থিত করব file.txtমধ্যে myarchive.zipথেকে /path/to/unzip/to/file.txt


18
এটি আরও ভাল উত্তর।
14.33 এ redburn

1
আপনি উত্পন্ন ফাইলের নামটি আলাদা হতে চান এমন ক্ষেত্রে এটি পরিচালনা করে না।
ওলেগ ভাস্কেভিচ 21

6
"-j" পরামিতি: জাঙ্ক পাথ। সংরক্ষণাগারটির ডিরেক্টরি কাঠামোটি পুনরায় তৈরি করা হয়নি; সমস্ত ফাইলগুলি নিষ্কাশন ডিরেক্টরিতে জমা হয় (ডিফল্টরূপে, বর্তমানটি)। "-d" প্যারামিটার: এক্সডির মধ্যে ফাইলগুলি বের করুন
e1i45

1
@ ওলেগভ্যাসকিভিচ, প্রশ্নটি ফাইলের নাম আলাদা হওয়ার জন্য অনুরোধ করে না
টেপমাস্টার

হ্যাঁ আমি জানি. তবুও আপ-ভোট হয়েছে। :)
ওলেগ ভাস্কেভিচ

24

সহজ সংস্করণ:

unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE

এটি PATH_OF_FILE_INSIDE_ARCHIVEবর্তমান ডিরেক্টরিতে পুনরায় তৈরি করবে তবে কেবলমাত্র নির্দিষ্ট ফাইলটি নিষ্কাশন করবে।

একটি জিপ সংরক্ষণাগারে সমস্ত ফাইল তালিকাভুক্ত করতে:

unzip -l ARCHIVE_NAME

1
গৃহীত উত্তরের চেয়ে অনেক সহজ।
ফ্র্যাক্টালস্পেস

প্রকৃতপক্ষে, দুর্দান্ত কাজ করেছে এবং এটি ওয়াহা সহজ
মাহমুদ আলী

2

ম্যাকোজে , যা ডিফল্টরূপে ইনফো-জিপ ব্যবহার করে

আপনি যা চান তা খুঁজতে প্রথমে ফাইলগুলি তালিকাভুক্ত করুন

unzip -l my.zip

তারপরে সংরক্ষণাগার থেকে বের করার জন্য ফাইলগুলির একটি তালিকা সরবরাহ করুন

unzip my.zip annoying/path/to/file

Stdout জন্য -p সঙ্গে একত্রিত করুন

unzip -p my.zip annoying/path/to/file >./file

1
আমি বুঝতে পারি না কেন লোকেরা কোনও স্পষ্ট কারণ ছাড়াই নিম্নচাপ করে। এটি একটি সঠিক উত্তর (কেবলমাত্র ম্যাকোএসের জন্য নয়)
ফ্র্যাক্টালস্পেস

@ ফ্র্যাক্টালস্পেস এটি পেটেন্টলি নয়, ওপি যা চায় তার বিপরীত কাজ করে।
কনরাড রুডলফ

কীটি স্বতন্ত্র ফাইল পাচ্ছে। Stdout এ আউটপুট এবং -p পতাকা ব্যবহার করে পুনর্নির্দেশ তুচ্ছ, তবে আমি এটি স্পষ্টভাবে যুক্ত করেছি
ক্যামেরন লোয়েল পামার

2

সাধারণ ব্যবহার:

unzip zipfile.zip path/inside/zip/file.txt

এবং এটি ফাইল স্ফীত করা হবে।

$ unzip -l ./../html.zip | grep wp-config

     3328  07-22-2019 15:10   html/wp-config.php

     2898  01-07-2019 23:30   html/wp-config-sample.php

$ unzip ./../html.zip html/wp-config.php

     Archive:  ./../html.zip
     inflating: html/wp-config.php

$ ls -lrth

     total 4.0K
     drwxr-sr-x 2 apache apache 4.0K Jul 26 14:41 html

$ ls -lrth html/*

     total 4.0K
     -rw-rw-rw- 1 apache apache 3.3K Jul 22 15:10 wp-config.php

এছাড়াও যোগ করা যাবে না -d outpathযেখানে ফাইল রাখা হয় উল্লেখ করার যুক্তি।
Efren

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