একটি ডিরেক্টরিতে সমস্ত ফাইল আনজিপ করুন


202

আমার কাছে জিপ ফাইলের একটি ডিরেক্টরি রয়েছে (একটি উইন্ডোজ মেশিনে তৈরি)। আমি এগুলি ব্যবহার করে ম্যানুয়ালি আনজিপ unzip filenameকরতে পারি, তবে কীভাবে আমি শেলটির মাধ্যমে বর্তমান ফোল্ডারে থাকা সমস্ত জিপ ফাইল আনজিপ করব?

উবুন্টু লিনাক্স সার্ভার ব্যবহার করা।

উত্তর:


394

এটি লিঙ্ক অনুসারে ব্যাশে কাজ করে :

আনজিপ \ *। জিপ


2
Zsh এর সাথে আমার ব্যাকস্ল্যাশ দরকার ছিল । আপনি যদি বাশ ব্যবহার করছেন তবে আপনার প্রয়োজনের কোনও কারণ আমি জানি না।
ডন ম্যাককুরডি

নকল ফাইল দিয়ে কী হবে? আমার ধারণা এটা কি ওভাররাইড হবে?
kerner1000

ম্যাকোস great
অহি টুনা

1
যখন এই করছেন আমি ফাইলের নাম ডিরেক্টরির মধ্যে সব zip ফাইলে জন্য মেলানো না
thebeancounter

1
উদ্ধৃতি সহ সংস্করণটি আমার জন্য ডাব্লুএসএল-তে কাজ করেছিল। ফাইল নামগুলির মধ্যে এফএসডব্লিউআইডাব্লুতেও ফাঁকা স্থান ছিল।
সর্বাধিক ক্যান্ডোসিয়া

107

ওয়াইল্ডকার্ড থেকে বাঁচার জন্য কিছু উদ্ধৃতি লিখুন:

unzip "*.zip"

2
+1 এটি আমার পক্ষে কাজ করেছিল। বাকিগুলি সীমাবদ্ধ করার সময় আমাকে একটি নির্দিষ্ট ফর্ম্যাট দিয়ে ফাইলের নাম আনজিপ করতে হয়েছিল। আমি সবেমাত্র ডাবল উদ্ধৃতিগুলির মধ্যে মিলের ফর্ম্যাটটি রেখেছি এবং এটি কবজির মতো কাজ করে। আউটপুট আমাকে আর্কাইভের সংখ্যা সাফল্যের সাথে প্রক্রিয়াজাত করে বলে।
ললিত কুমার বি

উইন্ডোজ সাবসিস্টেমের জন্য উবুন্টুতে সুন্দরভাবে কাজ করেছেন, 11/18/2018। শীর্ষ উত্তর কার্যকর হয়নি।
জুলিয়ানস্তলি

64

নিম্নলিখিত বাশ স্ক্রিপ্টটি জিপ ফাইলের ফাইলের নাম সহ বর্তমান ডিরেক্টরিতে থাকা সমস্ত জিপ ফাইলকে নতুন ডিআর করে তোলে:

নিম্নলিখিত ফাইলগুলি:

myfile1.zip
myfile2.zip 

এতে উত্তোলন করা হবে:

./myfile1/files...
./myfile2/files...

শেল লিপি:

#!/bin/sh
for zip in *.zip
do
  dirname=`echo $zip | sed 's/\.zip$//'`
  if mkdir "$dirname"
  then
    if cd "$dirname"
    then
      unzip ../"$zip"
      cd ..
      # rm -f $zip # Uncomment to delete the original zip file
    else
      echo "Could not unpack $zip - cd failed"
    fi
  else
    echo "Could not unpack $zip - mkdir failed"
  fi
done

4
এটি সমস্ত জিনিসকে জয় করার জিনিস। বিশ্বাস করা যায় না এটির চেয়ে বেশি ভোট দেওয়া হয়নি
বিিলনোহ

এটি ফাইলের নামের ফাঁকা জায়গাগুলি নিয়ে কাজ করে না।
ডেভিড অলিভার

1
শুধু কোট যোগ "ফাইলের নাম থেকে
CONvid19

1
আমার দিনটি বাঁচিয়েছে! ধন্যবাদ! আমি কিছু লুপ করছি, আনজিপ করব, একটি ক্রিয়া সম্পাদন করছি, অনুলিপি করব, কিছু গ্রেপ করব, অপসারণ করব। অনুপস্থিত জিনিসটি ছিল কীভাবে ফাইল.gz থেকে বাশ স্ক্রিপ্টে চলক হিসাবে ফাইল করা যায়
thahgr

38

আনজিপ *। জিপ, বা তারা সাবফোল্ডারগুলিতে থাকলে, এর মতো কিছু

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

আনজিপ ওয়াইল্ডকার্ড প্রক্রিয়াকরণ করে তাই "* .zip" নামক কোনও ফাইল আপনার প্রত্যাশা অনুযায়ী কাজ করে না।
জিওকার

3
প্রকৃতপক্ষে এটি প্রত্যাশিতভাবে ঠিক তাই করবে, অনুসন্ধান অপারেশনের ফলাফলটি আনজিপ
জন বার্গম্যান

1
এটি বর্তমান ডিরেক্টরিতে থাকা সমস্ত জিপ ফাইলগুলি বের করে দেবে, যদি আমি চাই যে সংশ্লিষ্ট জিপ ফাইলগুলি (সাবফোল্ডারগুলিতে উপস্থিত) সংশ্লিষ্ট সাবফোল্ডারগুলিতে উত্তোলন করা যায়?
habষভ অগ্রহরি

2
@ Habষভআগ্রহরি আমি আপনার মন্তব্যে একটি নতুন উত্তরে সম্বোধন করেছি ।
জোজো

gzip'edফাইলগুলির জন্য , gunzip -rfk .সম্পর্কিত ফোল্ডারগুলির মধ্যে পুনরাবৃত্তির
আনজিপিংয়ের

17

সমস্ত .zipফাইল আনজিপ করুন এবং একই নাম এবং .zipফাইল হিসাবে একই ফোল্ডারে একটি নতুন ফোল্ডারে সামগ্রী সংরক্ষণ করুন:

find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;

এটি @ ফটমনেসের উত্তরের এবং বর্ধিত @ hab ষভআগ্রহরির মন্তব্য :

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


1
gzip'edফাইলগুলির জন্য , gunzip -rfk .সম্পর্কিত ফোল্ডারগুলির মধ্যে পুনরাবৃত্তির
আনজিপিংয়ের

2
পথ find: illegal option -- nব্যবহার আনজিপ 6.00 অন্য কেহ -
ড্যানিড্যানিড্যানি

find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;আপনি ডিরেক্টরি তালিকা ভুলে গেছেন।
SaundersB

16
for i in *.zip; do
  newdir="${i:0:-4}" && mkdir "$newdir"
  unzip "$i" -d  "$newdir"
done

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

a.zip b.zip c.zipa b cযথাক্রমে ফোল্ডারে আনজিপ করা হবে ।


6

aunpack -e *.zip, atoolইনস্টল সহ। এটির সুবিধা রয়েছে যে এটি ত্রুটি সহকারে বুদ্ধিদীপ্তভাবে আচরণ করে এবং জিপটিতে কেবল একটি ফাইল না থাকলে সর্বদা সাব-ডিরেক্টরিতে আনপ্যাক করে। সুতরাং, ফাইলের জনগণের সাথে বর্তমান ডিরেক্টরিটি কলুষিত করার কোনও আশঙ্কা নেই, কারণ unzipকোনও জিপের সাথে কোনও ডিরেক্টরি কাঠামো নেই।


6

যে কোনও পসিক্স শেল-এ, এটি প্রতিটি জিপ ফাইলের জন্য আলাদা ডিরেক্টরিতে আনজিপ করা হবে:

for file in *.zip
do
    directory="${file%.zip}"
    unzip "$file" -d "$directory"
done

1
বা ওয়ান-লাইনার হিসাবে:for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
পিটারফ্লিন



1

যদি ফাইল হয় gzip'd। তারপরে কেবল ব্যবহার করুন:

gunzip -rfk .

মূল ডিরেক্টরি থেকে পুনরুক্তি করে মূল ডিরেক্টরিগুলি রেখে ফাইলগুলি প্রত্যাহার করতে (বা -kএগুলি মুছতে মুছুন)


0

এটি কোনও পেড্রো লবিটো উত্তরের একটি বৈকল্পিক যা নির্দিষ্ট এক্সটেনশনের শিক্ষাগুলি সহ ফাইলগুলি মুছতে পুনরাবৃত্তভাবে কোনও ডিরেক্টরিতে লুপ করবেন তা ব্যবহার করে :

shopt -s globstar
root_directory="."

for zip_file_name in **/*.{zip,sublime\-package}; do
    directory_name=`echo $zip_file_name | sed 's/\.\(zip\|sublime\-package\)$//'`
    printf "Unpacking zip file \`$root_directory/$zip_file_name\`...\n"

    if [ -f "$root_directory/$zip_file_name" ]; then
        mkdir -p "$root_directory/$directory_name"
        unzip -o -q "$root_directory/$zip_file_name" -d "$directory_name"

        # Some files have the executable flag and were not being deleted because of it.
        # chmod -x "$root_directory/$zip_file_name"
        # rm -f "$root_directory/$zip_file_name"
    fi
done



-3

ব্যবহার

sudo apt-get install unzip 

unzip file.zip -d path_to_destination_folder

লিনাক্সে একটি ফোল্ডার আনজিপ করতে


এটি কেবল একক ফাইল আনজিপ করবে। প্রশ্নটি সমস্ত ফোল্ডার আনজিপ করতে হয়
বিবেক পান্ডে

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