निकालना
हम 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>
और आप कैसे नामों को अलग करना चाहते हैं? क्या आप निष्कर्षण के दौरान संग्रह के अंदर निर्देशिका संरचना को बनाए रखना चाहते हैं?