'टार' कमांड का उपयोग करके किसी अन्य निर्देशिका में फ़ाइलों को कैसे निकालें?

मैंने सोचा tar archive.tar /users/mylocation काम करेगा, लेकिन ऐसा नहीं है । मैं ऐसा कैसे कर सकता हूं?

वर्तमान से अलग निर्देशिका में एक संग्रह निकालने के लिए, का उपयोग करें -C, या --directory, टार विकल्प, जैसा कि

tar -xf archive.tar -C /target/directory

ध्यान दें कि उस कमांड को चलाने से पहले लक्ष्य निर्देशिका मौजूद होनी चाहिए (इसे इसके द्वारा बनाया जा सकता है mkdir /target/directory).

पढ़ें मैनुअल पेज (आदेश: man tar) अन्य विकल्पों के लिए ।

ध्यान दें कि यदि आपके टैरबॉल में पहले से ही एक निर्देशिका नाम है जिसे आप बदलना चाहते हैं, तो जोड़ें --strip-components=1 विकल्प:

tar xf archive.tar -C /target/directory --strip-components=1

पिछले उत्तरों और टिप्पणियों का संयोजन:

केवल सामग्री निकालने और लक्ष्य निर्देशिका बनाने के लिए यदि यह गायब है:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

ज़िप में रूट(प्रथम स्तर) निर्देशिका को निकालने और निकालने के लिए

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1

एक अन्य विकल्प का उपयोग करना है-एक-शीर्ष-स्तर । यह स्वचालित रूप से मूल के फ़ाइल नाम के आधार पर एक निर्देशिका बनाएगा ।

tar zxvf filename.tgz --one-top-level

इसके अतिरिक्त यदि आप चाहें, तो आप अपना खुद का निर्दिष्ट कर सकते हैं और टार इसे स्वचालित रूप से बना देगा ।

tar zxvf filename.tgz --one-top-level=new_directory

निष्कर्षण के संबंध में मुझे जो दिलचस्प लगा, वह यह है कि यह निर्भर करता है कि आपने संग्रह कैसे बनाया, यह उदाहरण देखें

cd /tmpmkdir foldertouch folder/file.txt

जब आप करते हैं tar -zcvf folder.tar.gz folder सब कुछ अपेक्षित है = जब आप इसे अनटार करते हैं तो अब यह अनटारर्ड हो जाएगा (फ़ोल्डर बनाया जाएगा, यदि आपने इसे हटा दिया है) के रूप में /tmp/folder/.

लेकिन, जब आप टार के रूप में बनाएंगे tar -zcvf tmp-folder.tar.gz /tmp/folder और आप इसे /टीएमपी फ़ोल्डर में अनटार करते हैं, परिणाम होगा /tmp/tmp/folder निर्देशिका ! ऐसे मामले में आपको इसे अनटार करना होगा / - tar -xf tmp-folder.tar.gz -C /

@ उज्जवाल सिंग: वास्तव में, टार मैन पेज इतना मददगार नहीं है । यह “-सी डीआईआर” को “निर्देशिका डीआईआर में बदलें” के रूप में वर्णित करता है । भी बदतर: “टार -सी mydir xf संग्रह है.टार “काम नहीं करता है, जबकि” टार एक्सएफ आर्काइव । टार -सी mydir” करता है.

इसके अलावा,- सी, --निर्देशिका डीआईआर\एन निर्देशिका डीआईआर में परिवर्तनको`आउटपुट निर्देशिका को डीआईआर में बदलें (यदि डीआईआर मौजूद नहीं है तो विफल हो जाएगा) ’ के रूप में वर्णित किया जाना चाहिए । धन्यवाद @Mich. @ब्रायन_लर्सन का जवाब भी देखें ।

@ पटमोरिन निष्पक्ष होने के लिए, एक बार जब आप तर्क कॉलिंग सम्मेलनों को समझते हैं तो आप इसका उपयोग कर रहे हैं । आप ‘टार एक्सएफसी आर्काइव’ भी कर सकते हैं । टार मायदिर ’ या ’ टार-सी मायदिर-एक्सएफ आर्काइव । टार’ । यह केवल पारंपरिक शैली और जीएनयू-शैली के झंडे को मिला रहा है जो चीजों को तोड़ता है, जैसा कि । … ईमानदारी से उम्मीद की तरह है । पारंपरिक झंडे को पहले तर्क के रूप में एक बूँद के रूप में पारित किया जाता है । यदि वे पहले नहीं हैं तो आप उनसे काम करने की उम्मीद नहीं कर सकते । (मेरा मतलब है, हाँ, वैसे भी इसकी व्याख्या करना संभव है-मेरी बात यह है कि यह ऊपर और परे होगा, मानक नहीं)