একটি ব্যাচের ফাইল আনজিপিং করা হচ্ছে


33

আমি যখন চেষ্টা করি

 unzip filename.zip

এটা কাজ করে। যাইহোক, আমার জিপ ফাইলগুলির একটি সিরিজ আনজিপ করা দরকার।

কেন হয়:

 find . -name "*.zip" -print0 | xargs -0 unzip

অথবা

 ls *.zip | xargs unzip

কাজ করছে না?

উভয় ক্ষেত্রেই আমি একটি "সতর্কতা: ফাইলের সাথে মেলে না:" বার্তাটি পাই।

উত্তর:


48

আপনি আদেশটি জারি করতে পারেন:

$ unzip '*.zip'

রেফারেন্সের জন্য এখানে দেখুন ।


আমি এটি পরিষ্কারভাবে বলিনি, তবে তারা সবাই একই ডিরেক্টরিতে নেই। সুতরাং, আমার সন্ধানের আউটপুট দরকার।
জেনোবুর্তো

4
ধন্যবাদ। এটি সত্যিকারের প্রশ্নের সাথে পুরোপুরি সঠিকভাবে মেলে না তবে এটি আমার সমস্যার সমাধান করেছে। আমি চেষ্টা করছিলাম unzip *এবং এটি caution: filename not matchedপ্রতিটি ফাইলের জন্য ফিরে এসেছিল unzip '*.zip'তবে কাজটি করেছিল।
ইভান

27

আপনার কমান্ডগুলি কাজ করছে না কারণ তারা একই ফাইলটি একই কমান্ড লাইনে স্টাফ করে। এটি বেশিরভাগ প্রোগ্রামের সাথে কাজ করার সময়, unzipজিপ ফাইল হিসাবে প্রথম যুক্তি গ্রহণ করবে এবং এর থেকে ফাইলগুলি প্রথম হিসাবে নেওয়া হবে after প্রতিটি ফাইলের জন্য আপনাকে একবার কমান্ড প্রয়োগ করতে হবে:

find . -name "*.zip" -print0 | xargs -0 -n1 unzip

অথবা

find . -name '*.zip' -exec unzip {} \;

দ্বিতীয়টি যদি সত্যিই প্রচুর ফাইল থাকে সে ক্ষেত্রে এটি আরও ভাল বলে মনে হয়। (অন্যথায় এটি অভিযোগ করেছে যে কমান্ডটি xargs সহ খুব দীর্ঘ)
রেকট

5

ব্যাশে আপনি নিম্নলিখিতগুলিও করতে পারেন:

for i in *.zip; do
    unzip "$i"
done

এছাড়াও স্যুইচটি unzipনিতে -dপারে যাতে আপনি আউটপুটটিকে বিভিন্ন জায়গায় লক্ষ্য করতে পারেন।

উদাহরণ স্বরূপ:

uzdir=/path/to/unzips
for i in *.zip; do
    [ -d "$uzdir/$i" ] || mkdir -p "$uzdir/$i"
    unzip "$i" -d "$uzdir/$i"
done

1

উপরের লুপিংগুলির চেয়ে অনেক সহজ সমাধান রয়েছে, ডিরেক্টরিটি ব্যবহার করুন -d:

unzip -o somefiles.zip -d $directoryPath

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