आउटपुट से एक्सटेंशन हटाने के लिए मैं इसे "ज़िप मल्टीपल फाइल्स" स्क्रिप्ट (मैक ओएस) में कैसे बदल सकता हूं?


0

मैं इस लिपि का उपयोग कई फाइलों को अलग-अलग जिप फाइल में बदलने के लिए करता हूं (हालांकि एक ऑटोमेटर सेवा, इसलिए बैश)

for f in "$@"
do
zip -j "$f.zip" "$f"
done

यह पूरी तरह से काम करता है, ज़िप फ़ाइल में नाम का विस्तार है:

zipme.jpg zipme.jpg.zip के रूप में सामने आता है

परिणाम मैं बाद में हूँ: zipme.zip

यदि आप एक्सटेंशन छोड़ सकते हैं और अंडरस्कोर के साथ अवधि को बदल सकते हैं तो यह और भी बेहतर होगा: zipme_jpg.zip

मेरे कई क्लाइंट को दो पीरियड्स की समस्या है। अभी मैं उन्हें ज़िप करने के बाद हाथ से हटा देता हूं। क्या कोई मुझे बता सकता है कि स्क्रिप्ट को कैसे ठीक किया जाए?


1
इस सवाल का जवाब देता है ... क्या आप एक jpg ज़िप करने से हासिल करते हैं? एक jpg बहुत अधिक एक अचूक प्रारूप है ... आप बेहतर गुणवत्ता वाले jpgs बनाने से बेहतर होंगे
Tetsujin

@ टेटसुजिन माइनर (मुझे सहमत होना चाहिए, यह अत्यंत मामूली है) संपीड़न की मात्रा (शायद ज़िप फ़ाइल के ओवरहेड की तुलना में कम) ज़िप के लिए सिर्फ एक संभावित कारण है। इसके अलावा, एक संग्रह जो मेटाडेटा को संग्रहीत करता है, जैसे कि मूल फ़ाइल का टाइमस्टैम्प। तब मूल (संपीड़ित) फ़ाइल का टाइमस्टैम्प संरक्षित होता है, भले ही कुछ एक्शन, कुछ नेटवर्किंग प्रोटोकॉल पर फ़ाइल स्थानांतरित करने के लिए, कॉपी किए जाने वाले (संग्रह) फ़ाइल के टाइमस्टैम्प को अपडेट करता है। मेरे पास एक प्रोग्राम है जो डेटा फ़ाइल के टाइमस्टैम्प के कारण एक कार्य नहीं करता है, इसलिए ऐसे विवरण वास्तव में मायने रख सकते हैं।
TOOGAM

@TOOGAM - tbh, आप सही हो सकते हैं ... लेकिन यह मेरा अगला प्रश्न होगा ... व्यक्तिगत रूप से, समूह के रूप में क्यों नहीं? यह सब XY समस्या का बहुत अधिक उपयोग करता है, जो वास्तव में मेरी रुचि को
बढ़ाता है

मेरे विशेष मामले में मेरे ग्राहकों को कभी-कभी बड़ी फ़ाइलों (फिल्मों और ऐसे) से परेशानी होती है, इसलिए वे मुझे अलग से पोस्ट करने के लिए ASK करते हैं। और अगर मैं बस एक तस्वीर या फिल्म को ftp पर पोस्ट करता हूं, तो उन्हें अक्सर यह पता लगाने में परेशानी होती है कि कैसे डाउनलोड करने के बजाय सिर्फ अपने ब्राउज़र को पॉप अप करके देखें (मेरे क्लाइंट अक्सर साधारण लोग होते हैं, यहां तक ​​कि एक ftp क्लाइंट का उपयोग नहीं करते हैं)। लेकिन एक ज़िप फ़ाइल का लिंक कभी भी विफल नहीं होता (और मुझे तकनीकी सहायता नहीं करनी है)।
टेरी वेन रैनसन

@TerryWayneRanson - आह, ठीक है, समझ में आता है, धन्यवाद।
टेटसुजिन

जवाबों:


3

Jpegs पहले से ही संपीड़ित हैं, ज़िप के साथ उन्हें फिर से संपीड़ित करने की कोई आवश्यकता नहीं है। लेकिन आप विस्तार को हटाने के लिए पैरामीटर विस्तार में प्रतिस्थापन स्ट्रिंग का उपयोग कर सकते हैं।

for f in "$@"
do
zip -j "${f%.*}.zip" "$f"
done

${f%.*}स्ट्रिप्स फ़ाइल नाम बंद विस्तार।


मेरे द्वारा सुझाए गए sed या पुनर्निर्देशन विधियों की तुलना में बहुत सरल। अच्छा लगा।
cd

हाँ, यह वास्तव में सिर्फ एक उदाहरण फ़ाइल नाम था। आपके सहयोग के लिए धन्यवाद। कोड पूरी तरह से काम करता है।
टेरी वेन रैन्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.