নিষ্কর্ষ
আমরা zipinfoএই প্রক্রিয়ার অংশ হিসাবে ব্যবহার করতে পারি , এটি zipপ্যাকেজ থেকে একটি প্রোগ্রাম ।
zipinfo -2 example.zip
এতে কেবল ফাইলগুলির নাম প্রদর্শিত হবে example.zip, যা দেখতে কিছু হবে:
file1-long-name-...-bla-bla.html
file2-long-name-...-bla-bla.html
সুতরাং আমরা সমস্ত ফাইল আহরণের জন্য এই বৈশিষ্ট্যটি ব্যবহার করতে পারি:
zipinfo -2 example.zip | while read i;
do
long_fname=${i%.*}
unzip -p -c example.zip "$i" > "${long_fname:0:250}.${i##*.}"
done;
long_fname=${i%.*}: দীর্ঘ ফাইলের নাম থেকে এক্সটেনশন সরিয়ে দেয়, সুতরাং ফাইলের নামটি যদি 256 টির চেয়ে কম থাকে; আমরা একটি সদৃশ এক্সটেনশন পেতে যাচ্ছি না।
${long_fname:0:250}.${i##*.}: বৈধ সংখ্যক চরিত্রের সাথে একটি নতুন ফাইলের নাম তৈরি করে একটি .এবং ফাইলের আসল এক্সটেনশন যুক্ত করে।
কেবলমাত্র আমরা ফাইলগুলির তালিকায় লুপ করছি এবং তাদের প্রত্যেককে একটি নতুন বৈধ ফাইল নাম দিয়ে বের করব যা 256 অক্ষর।
নতুন নামকরণ
আপনি zipnoteকমান্ডটি ব্যবহার করতে পারেন , এটি zipপ্যাকেজেরও একটি অংশ ।
প্রথমে আপনার জিপ ফাইলের একটি ব্যাকআপ পান।
এই আদেশটি চালান:
zipnote example.zip > names
সম্পাদক ব্যবহার করে নামগুলি খুলুন, এটি দেখতে এরকম দেখাচ্ছে:
@ file name long in zip and a lot of other strings in the file name
@ (comment above this line)
@ (zip file comment below this line)
নতুন ফাইলের নাম যুক্ত করুন:
@ file name long in zip and a lot of other strings in the file name
@=new short name for above file
@ (comment above this line)
@ (zip file comment below this line)
তারপরে ফাইলগুলির নাম পরিবর্তন করতে:
zipnote -w example.zip < names
আপনি এই সমস্তটির নাম পরিবর্তন করেছেন, আপনি একটি সাধারণ স্ক্রিপ্টও লিখতে পারেন যা এটি আপনার জন্য স্বয়ংক্রিয়ভাবে করে।
unzip -l <ARCHIVE>এবং আপনি কীভাবে নামগুলি কাটাতে চান? নিষ্কাশন করার সময় আপনি কি সংরক্ষণাগারটির ভিতরে ডিরেক্টরি কাঠামো ধরে রাখতে চান?