একটি ফোল্ডারে সমস্ত .zip ফাইলের সামগ্রী কীভাবে তালিকাভুক্ত করবেন এবং একটি নির্দিষ্ট ফাইলের জন্য গ্রেপ করবেন?


28

আমার কাছে 348 জিপ ফাইল রয়েছে এবং আমি এমন একটি ফাইল সন্ধান করতে চাই যা জিপ ফাইলগুলির মধ্যে একটিতে রয়েছে, unzip -lওয়াইল্ড কার্ডের সাথে কাজ করে না?

আমি কীভাবে সমস্ত .zipফাইলের সামগ্রী grepএবং জিপগুলিতে থাকা সমস্ত ফাইলের সংশ্লেষিত তালিকার মাধ্যমে তালিকাবদ্ধ করতে পারি?

উত্তর:


17

ব্যবহার zipinfoএখানে একটি সূক্ষ্ম সমাধান। তবে সাধারণভাবে যখনই আপনি ফাইলের তালিকায় একটি আদেশ প্রয়োগ করতে চান এবং কমান্ড ফাইলগুলির একটি তালিকা গ্রহণ করে না, আপনি একটি forলুপ ব্যবহার করতে পারেন :

for file in *.zip; do
    unzip -l "$file"
done \
| grep "\.zip\|setup"

আপনি যে ফাইলটি সন্ধান করছেন তাতে যদি তার ফাঁকা স্থান থাকে তবে: your fileগ্রেপ নিয়মিত এক্সপ্রেশনে আপনাকে ব্যাকস্ল্যাশের মতো প্রতিটি স্পেস ছেড়ে যেতে হবে grep "\.zip\|your\ file"


নিখুঁতভাবে কাজ করে একমাত্র সমস্যা হ'ল এটি
জিপটির

আমি আপনার পোস্ট সম্পাদনা করেছি এবং ফাইলের নাম যেখানে সেটআপ পাওয়া যায় সেখানে প্রদর্শন করার জন্য নিয়মিত অভিব্যক্তি যোগ করেছি, +1 এবং স্বীকৃতি
এডুয়ার্ড ফ্লোরিয়েনস্কু

ওহ হ্যাঁ, আমি যুক্তির চারপাশে থাকা উক্তিগুলি ভুলে গিয়েছি unzip, কত বিব্রতকর।
কনরাড রুডল্ফ

1
@ জয়সুলিভান এই কোডটি ব্যবহার করবেন না, এটি ফাঁকা স্থান সহ পাথের জন্য ব্যর্থ হবে। Ls এর আউটপুটটি কখনই পাইপ করবেন না। পরিবর্তে আপনি ব্যবহার করতে পারেন find
কনরাড রুডল্ফ

12

আপনি ব্যবহার করতে পারেন zipinfo। এটি ডিফল্ট উবুন্টু ইনস্টলেশন অন্তর্ভুক্ত। আরও তথ্যের জন্য ম্যানুয়াল পৃষ্ঠা পরীক্ষা করুন ।

উদাহরণস্বরূপ, setupবর্তমান ডিরেক্টরিতে জিপ ফাইলগুলির একগুচ্ছ প্যাটার্নটি সন্ধান করতে, এই আদেশটি ব্যবহার করুন:

find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup

আমি একটি পেতে caution: filename not matched: case1.zip... caution: filename not matched: case348.zipযে জিপ, দুই উবুন্টু OSs, 11.10 এবং 12.04 উপর পরীক্ষা জন্য।
এডুয়ার্ড ফ্লোরিয়েন্সু

পুনঃটুইট করুন যদিও উত্তরটি আমার পক্ষে কাজ করছিল
আনোয়ার

সমস্যাটি হ'ল ফাইলটি এতে থাকতে পারে setupএবং এটি একই ত্রুটিটি রাখে যদিও এটি এটির মতো কাজ করে:zipinfo -l * | grep "setup"
এডুয়ার্ড ফ্লোরিইনসকু

আমি উত্তর সম্পাদনা করেছি। আমি মনে করি এটি এখন আরও শক্তিশালী
আনোয়ার

1
ধন্যবাদ, প্রয়াসের জন্য +1, তবে জিপ ফাইলের নামে ফাঁক থাকলে এটি কাজ করবে না।
এডুয়ার্ড ফ্লোরিয়েন্সু

6

জিপ সংরক্ষণাগারে ফাইলগুলি তালিকাভুক্ত করতে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন।

unzip -l

একটি সংকুচিত সংরক্ষণাগারটি গ্রেপ করার জন্য আপনাকে সেই ধরণের সংরক্ষণাগার বিন্যাসের সাথে কাজ করার জন্য নির্মিত সংকুচিত সংরক্ষণাগার ইউটিলিটিগুলি ব্যবহার করা উচিত।

জিপ সংরক্ষণাগারগুলির জন্য:

zipgrep --help  
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the zip members for a string or pattern.

টাকার সংরক্ষণাগারগুলির জন্য:

zgrep --help
Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
uncompressed contents if they are compressed.

OPTIONs are the same as for 'grep'.

অন্যান্য কয়েকটি সরঞ্জাম রয়েছে যা সংরক্ষণাগারগুলির সাথেও কাজ করে। একই কাজটি করার জন্য আপনি গ্রেপের আউটপুটটি পাইপ করতে পারেন।

zcat
zcat my.archive.zip | grep "some text"

অথবা আপনি এই সরঞ্জামগুলির অনুসন্ধান কার্যকারিতাটি ব্যবহার করতে পারেন

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