एक अन्य निर्देशिका में एक tar.gz को कैसे अनकैप करें


270

मेरे पास एक संग्रह है

* .tar.gz

एक गंतव्य निर्देशिका में मैं इसे कैसे अनसुना कर सकता हूं?


9
सभी उतार क्यों? बस -C से अधिक विकल्प हैं (और शायद उसका संस्करण यह प्रदान नहीं करता है)।
अल्फ

2
स्टैक ओवरफ्लो प्रोग्रामिंग और विकास के सवालों के लिए एक साइट है। यह प्रश्न ऑफ़-टॉपिक प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। देखें किन विषयों मैं यहाँ के बारे में पूछ सकते हैं सहायता केंद्र में। शायद सुपर यूजर या यूनिक्स और लिनक्स स्टैक एक्सचेंज पूछने के लिए बेहतर जगह होगी।
jww

@jww जब मैं आपकी बात देख रहा हूं तो हमारे पास इस मंच में नामित tarऔर gzआसपास के टैग भी हैं । टारबॉल को एक विशिष्ट निर्देशिका में निकालना अच्छी तरह से एक शेल स्क्रिप्ट का हिस्सा हो सकता है और इस तरह प्रोग्रामिंग का हिस्सा हो सकता है। मुझे लगता है कि इस तरह के प्रश्न को तब किसी भी फोरम में पूछा जा सकता है।
अल्फ

जवाबों:


319

यदि आप Gnu संस्करण का उपयोग कर रहे हैं तो आप अपनी पसंद की लक्ष्य निर्देशिका देने के लिए विकल्प -C(या --directoryयदि आप लंबे विकल्प पसंद करते हैं) का उपयोग कर सकते हैं tar। निर्देशिका मौजूद होनी चाहिए:

mkdir foo
tar -xzf bar.tar.gz -C foo

यदि आप tarकिसी विशिष्ट निर्देशिका को निकालने में सक्षम नहीं हैं , तो आप cdकॉल करने से पहले बस अपनी लक्ष्य निर्देशिका में जा सकते हैं tar; फिर आपको अपने पुरालेख के लिए एक पूर्ण पथ देना होगा। आसपास की स्क्रिप्ट को प्रभावित करने से बचने के लिए आप इसे स्कूपिंग सबस्क्रिप्शन में कर सकते हैं:

mkdir foo
(cd foo; tar -xzf ../bar.tar.gz)  # instead of ../ you can use an absolute path as well

या, यदि न तो कोई पूर्ण पथ और न ही संग्रह फ़ाइल के लिए एक सापेक्ष पथ उपयुक्त है, तो आप इसका उपयोग स्कूप उपखंड के बाहर संग्रह को नाम देने के लिए भी कर सकते हैं:

TARGET_PATH=a/very/complex/path/which/might/even/be/absolute
mkdir -p "$TARGET_PATH"
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz

107
gzip -dc archive.tar.gz | tar -xf - -C /destination

या, GNU टार के साथ

tar xzf archive.tar.gz -C /destination

3
मुझे यह पसंद है कि gzipटार ज़िपेड अभिलेखागार को नहीं समझता है।
अल्फ

4

अर्क myArchive.tar को / destinationDirectory

आदेश:

cd /destinationDirectory
pax -rv -f myArchive.tar -s ',^/,,'

0

आप उपयोग कर सकते हैं के लिए किसी अन्य फ़ोल्डर में अनटार कई .tar.gz फ़ाइलों के लिए पाश। निम्न कोड स्क्रिप्ट के तर्क के रूप में / गंतव्य / फ़ोल्डर / पथ ले जाएगा और सभी .tar.gz फ़ाइलों को वर्तमान स्थान पर / गंतव्य / फ़ोल्डर / पथ में मौजूद खोल देगा।

if [ $# -ne 1 ];
 then
 echo "invalid argument/s"
 echo "Usage: ./script-file-name.sh /target/directory"
 exit 0
fi
for file in *.tar.gz
do
    tar -zxvf "$file" --directory $1
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.