जवाबों:
इसलिए अगर मैं सही तरीके से समझूं, तो आप एक विशेष फ़ोल्डर में फ़ाइलों और फ़ोल्डरों को संग्रहीत करने की कोशिश कर रहे हैं, लेकिन रूट फ़ोल्डर को शामिल किए बिना।
उदाहरण:
/test/test.txt
/test/test2.txt
जहां test.txt और test2.txt को ज़िप में संग्रहीत किया जाएगा, लेकिन परीक्षण / परीक्षण नहीं
आप / परीक्षण / निर्देशिका में cd कर सकते हैं, तब कुछ ऐसा चला सकते हैं,
zip -r filename.zip ./*
जो filename.zip नाम के एक ही फोल्डर में एक आर्काइव बनाएगा। या यदि आप इसे उस फ़ोल्डर के बाहर से चला रहे हैं, जिसे आप चला सकते हैं,
zip -r test.zip test/*
/ * वह हिस्सा है जिसमें संपूर्ण फ़ोल्डर के बजाय केवल फ़ोल्डर की सामग्री शामिल है।
संपादित करें: ओपी कई ज़िप चाहता था, समाधान एक हैक के एक बिट होने के नाते समाप्त हो गया, मैं इस बात से उत्सुक हूं कि क्या ऐसा करने का एक बेहतर तरीका है।
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
काम नहीं करता। क्या निर्देशिका के बाहर से इसे प्राप्त करने का कोई सही तरीका है?
अपने ज़िप कमांड में -j
या --junk-paths
विकल्प का उपयोग करें ।
से जिप आदमी पेज :
-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).
इस आदेश के बारे में कैसे?
$ cd somedir ; zip -r ../zipped.zip . * ; cd ..
cd
। उम्मीद थी कि संग्रहीत मार्ग को अधिक सटीक रूप से निर्दिष्ट करने का एक तरीका था।
उम्मीद है की यह मदद करेगा।
(cd directory && zip -r ../out.zip .)
यह मुख्य शेल को उसी डायरेक्टरी में रखता है और केवल सब-शेल की डायरेक्टरी को बदलता है जो कमांड के बाद मर जाता है।