टारबॉल निकालते समय लक्ष्य निर्देशिका बनाएं


25

क्या एक लक्ष्य निर्देशिका बनाना संभव है, इसके समान mkdir -p, जहाँ मैं अपने टार कमांड के भीतर एक गैर-मौजूद लक्ष्य निर्देशिका को परिभाषित कर सकता हूँ, और टार मेरे लिए निर्देशिका बनाएगा?

मुझे पता है कि मैं आउटपुट का उपयोग करके डायरेक्टरी में रीडायरेक्ट कर सकता हूं tar -C /target/dir, लेकिन यह तब काम नहीं करता है जब टारगेट डायरेक्टरी न के बराबर हो।


4
यदि यह संभव नहीं है, तो आप हमेशा एक शेल उपनाम बना सकते हैं।
n0pe

जवाबों:


38
mkdir -p /target/dir && tar -C /target/dir

3
कोई चम्मच, सीधे और बिंदु तक।
अमादो मार्टिनेज

10
मामूली बदलाव ने सुझाव दिया:mkdir -p /target/dir && tar -C $_
मार्क मेलविले

@MarkMelville ने हमें बताया कि यहाँ $ $ क्या माना जाता है
सुहैब

@ सहाब बाश $_में एक विशेष पैरामीटर है जो पिछले तर्क के अंतिम तर्क तक फैलता है।
कॉन्सेप्टराट

13
tar -xvf bash.html_node.tar.gz --one-top-level

Tar कमांड के मैन पेज से

--one-top-level[=DIR]

    डीआईआर में सभी फ़ाइलों को निकालें , या, अगर तर्क के बिना उपयोग किया जाता है, तो संग्रह के आधार नाम से एक उपनिर्देशिका में (शून्य से मानक संपीड़न प्रत्यय द्वारा पहचाने जाने योग्य --auto-compress)।

----- परीक्षा

परीक्षण 1

tar zxvf ../aaa.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree aaa
aaa/
├── 111
└── 222

// अगर tgz नाम अभिलेख के root_dir के समान है, तो कोई अन्य प्रभाव नहीं

परीक्षण २

mv ../aaa.tgz ../bbb.tgz

tar zxvf ../bbb.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree bbb
bbb
└── aaa
    ├── 111
    └── 222

// अगर tgz नाम आर्काइव के root_dir के समान नहीं है, तो एक शीर्ष-स्तरीय डायर बनाएं


3
GNU टार की आवश्यकता है मैक डिफॉल्ट bsd टार में यह विकल्प नहीं है।
कर्टिस येलोप

1
हां, इसका अधिक स्पष्ट उल्लेख किया जाना चाहिए।
kcrisman

5

इससे मुझे और समझ में आया: mkdir -p /create/folder && tar -zxf haroopad-v0.13.0_x64.tar.gz -C /create/testfolder

mkdirफ़ोल्डर बनाता है, हालांकि मुझे -pस्विच समझ में नहीं आता है । &&आपको दूसरी कमांड निष्पादित करने देता है। मैंने ठेठ टार स्विच का उपयोग किया लेकिन अंत -Cमें निर्देशिकाओं को बदलने और उस स्थान पर निकालने के लिए उपयोग किया जाता है।

संदर्भ: एक्सट्रैक्ट-फाइल्स-इन-इन-आर्क-टार-गज़-टू-न्यू-डायरेक्टरी-नेम-आर्काइव


2
अगर निर्देशिका पहले से मौजूद है तो -p स्विच में कोई त्रुटि नहीं होगी।
डेविड

@ यह किसी भी गैर-मौजूदा निर्देशिका का निर्माण करेगा, अर्थात /createयदि यह मौजूद नहीं है तो इसे बनाएगा ।
एंटोनियो पेरेज़

1

यदि आप पथ बनाने के लिए नहीं जानते हैं ...
टार फ़ाइल से आवश्यक पथ प्राप्त करें, तो उन्हें बनाएं ...

for P in \`tar tvf tarfile.tar |tr -s [:space:] |cut -d' ' -f6\`; do  
    C=\`echo "${P: -1}"\`  #get the last character  
    if [ $C = '/' ]; then  
        echo "Found directory: $P"  
        mkdir -p $P  
    fi  
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.