2012-03-15 9 views
22

से पहले निर्देशिका नाम का नाम बदलें मेरे पास एक निर्देशिका है उदा। /var/tmp/my-dir/ है कि मैं अक्सर निम्न आदेश के साथ सेक:,टैर हैप्स

$ cd /var/tmp/ 
$ tar -zcf my-dir.tar.gz my-dir/* 

बाद में जब मैं मेरी-dir.tar.gz untar, यह मौजूदा निर्देशिका में my-dir/ पैदा हो जाएगी। ऐसा लगता है कि my-dir निर्देशिका टैरबॉल के अंदर "लपेटा" है। क्या टैर विकल्प my-dir का नाम बदलने के लिए विकल्प है your-dir वास्तविक टैरिंग होता है। तो ...

$ tar -zxf my-dir.tar.gz 
# So that ... this creates your-dir/, instead of my-dir/ 

धन्यवाद।

उत्तर

41

कौन सा tar?

GNU Tar--transform तर्क स्वीकार करता है, जिसमें आप फ़ाइल नामों में हेरफेर करने के लिए sed अभिव्यक्ति देते हैं।

उदाहरण के लिए, खोल के दौरान नाम बदलने के लिए:

tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/ 

बीएसडी टार और एस टार इसी तरह एक -s तर्क है, एक सरल /old/new/ (नहीं एक सामान्य sed अभिव्यक्ति) ले जा रहा।

+0

वाह, बहुत बहुत धन्यवाद! यह एक आकर्षण (स्वीकृत, +1) की तरह काम करता है। – moey

+1

@ephemient, मुझे --transform = 'pattern' का उपयोग करना था, जैसे: sudo tar -xjvf thunderbird-14.0.tar.bz2 --transform = 's/thunderbird \ (\/\)/thunderbird.14 \ 1/' ln -sf thunderbird.14 thunderbird के साथ, अद्यतन थंडरबर्ड एक समस्या नहीं होगी! \ m/ –

+1

'--transform' 1.2 में पेश किया गया, दुर्भाग्य से आरएचईएल और सेंटोस 5.10 केवल tar v1.15 के साथ आता है :( –

0

मैक काम करता है -s ध्वज।

संपीड़ित पर नाम बदलें:

निकालने पर tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*

नाम बदलें:

tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/

संबंधित मुद्दे