উবুন্টু টার্মিনালের মাধ্যমে একই নামের নতুন ফোল্ডারে একাধিক জিপ ফাইলগুলি বের করুন


36

আমার কাছে অনেকগুলি জিপ ফাইল রয়েছে a.zip, b.zip, c.zip, ... এবং আমি টার্মিনালের মাধ্যমে এগুলির প্রতিটিকে যথাক্রমে নতুন, ফ, এ , বি, সি, ... এ বের করতে চাই ।

প্রকৃতপক্ষে, আমি যা চাই তা হল একটি সমাধান যা আমি পরে ব্যবহার করতে পারি findকারণ আমার কাছে আসলে অনেকগুলি ফোল্ডার রয়েছে 2014, 2013, 2012, ... তাদের প্রত্যেকটিতে অনেকগুলি জিপ ফাইল a.zip, b.zip ইত্যাদি রয়েছে যদি আমি করি find . -name "*.zip" -exec {} unzip \;এটি সমস্ত ফাইল আনজিপ করে তাদের নিজ নিজ পিতামত ফোল্ডারে রাখবে।


উত্তর:


71

-dসংরক্ষণাগার সামগ্রীগুলির জন্য একটি বিকল্প ডিরেক্টরি সেট করার জন্য আপনার আনজিপ বিকল্পটি ব্যবহার করতে সক্ষম হওয়া উচিত ।

unzip -d a a.zip
unzip -d b b.zip

ইত্যাদি। একটি findঅভিব্যক্তির মধ্যে, আপনি শেল প্যারামিটার সম্প্রসারণ উদাহরণস্বরূপ জিপ ফাইলের নাম থেকে ডিরেক্টরিটির জন্য নাম অর্জন করতে সক্ষম হবেন

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

প্রথমে একটি echoie যুক্ত করে এটি পরীক্ষা করুন

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

বা মত কিছু

while read -rd $'\0' f; do 
  unzip -d "${f%.*}" "$f"
done < <(find -name '*.zip' -print0)

2
test it first…অংশটির জন্য +1
mrzmyr

2
findএকটি ডিরেক্টরি প্রয়োজন, তাইfind . -name ...
slp

@ এসএলএফ পসিক্স্লি, হ্যাঁ - তবে জিএনইউ-র ক্ষেত্রে নয় find( "যদি কোনও শুরুর পয়েন্ট নির্দিষ্ট না করা থাকে .তবে ধরে নেওয়া হয়।" )
স্টিল্ড্রাইভার

10

আমি নিজেই এটি সন্ধান করতে এসেছি, কেবল বুঝতে পেরেছিলাম যে আমি অন্যান্য কমান্ড দিয়ে ইতিমধ্যে এটি করেছি এবং এটি অন্য যে কোনও কিছুতে প্রয়োগ করা যেতে পারে, যেভাবে আমি ইতিমধ্যে এটি করছিলাম।

অনুসন্ধানের পদ্ধতিটি অকারণে অত্যধিক জটিল।

for i in *.zip; do unzip "$i" -d "${i%%.zip}"; done

এটি হ'ল প্রশ্নের খুব উত্তরের উত্তরটি হাতে নিচ্ছে। পূর্ববর্তী একটি হাস্যকর এবং এর পরে একটি ফাইল সম্পর্কিত রুট ফোল্ডারগুলিতে বাছাই করে না।
TheMegolith

একটি ডিরেক্টরী তৈরি সম্পর্কে কিভাবে যেতে হবে ছাড়া.zip প্রত্যয়? বন্ধুর জন্য জিজ্ঞাসা।
দশার্ড

উত্তরটি একটি .zip প্রত্যয় সহ একটি ডিরেক্টরি তৈরি করে না, এটি ধনুর্বন্ধনীগুলির মধ্যে অংশটির খুব বিন্দু।
কেনসিইন্ডার

6

সহজভাবে ব্যবহার করুন

unzip '*.zip' -d /home/user/folder/

11
যদি না আমি কিছু অনুপস্থিত করছি, এই / হোম / ব্যবহারকারী / ফোল্ডারের মধ্যে সবকিছু আনজিপ করবে না বা / হোম / ব্যবহারকারী / ফোল্ডার / a ও / হোম / ব্যবহারকারী / ফোল্ডার / খ
এম জাস্টিন

1

আনরার ব্যবহার করে আমারও এটি করা দরকার ছিল। কেনসিন্ডারের কোডে সামান্য পরিবর্তন করে এটি অর্জন করা যেতে পারে।

for i in *.rar; do mkdir "${i%%.rar}"; unrar x -r "$i" "${i%%.rar}"; done 

পিএস: আমি এটি একটি মন্তব্য হিসাবে যুক্ত করতে চেয়েছিলাম তবে আমার যথেষ্ট খ্যাতি পয়েন্ট নেই!

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