मैं टारबॉल से एक विशिष्ट निर्देशिका कैसे निकालूं? और एक प्रमुख निर्देशिका पट्टी?


12

मैं वर्डप्रेस टारबॉल से एक विशिष्ट निर्देशिका निकालना चाहता हूं। विशेष रूप wp-includesसे .। ऐसा प्रतीत होता है कि टारबॉल के अंदर निर्देशिका संरचना है, wordpress/wp-includesलेकिन मुझे सिर्फ ./wp-includesएक बार निकालने की आवश्यकता है, कोई प्रमुख वर्डप्रेस निर्देशिका नहीं। यह मैं कैसे करूंगा?

जवाबों:


13

एक विशिष्ट निर्देशिका (और इसकी सामग्री, पुनरावर्ती) निकालने के लिए, बस इसे कमांड लाइन पर एक अतिरिक्त तर्क के रूप में पास करें। जीएनयू टार के साथ , आप --strip-componentsविकल्प के साथ एक अग्रणी निर्देशिका पट्टी कर सकते हैं (और अधिक आम तौर पर फ़ाइल नामों को बदल सकते हैं --transform)। गैर-लिनक्स सिस्टम पर, आप पैक्स का उपयोग कर सकते हैं (यह POSIX में है, लेकिन कुछ लिनक्स वितरण इसे अपने डिफ़ॉल्ट इंस्टॉलेशन से छोड़ देते हैं) और इसका -sविकल्प।

tar xf foo.tar --strip-components=1 wordpress/wp-includes  #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes

आप खाली नाम के लिए सब कुछ फिर से लिखने के लिए एक नियम को जोड़कर पुनर्लेखन नियमों के साथ समावेश सूची को मर्ज कर सकते हैं (जिसका अर्थ है "निकालें नहीं"; नियम केवल तभी लागू होता है यदि पिछले नियम मेल नहीं खाते)।

pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!

5

यह मानते हुए कि आपके पास GNU टार है, आप उपयोग कर सकते हैं --strip-components:

$ tar xaf tarball.tar.gz --strip=1 wordpress/wp-includes

मेरा मानना ​​है कि बीएसडी टार के वर्तमान संस्करण भी समर्थन करते हैं --strip-components। सबसे खराब स्थिति में, आप कर सकते हैं:

$ tar xzf tarball.tar.gz wordpress/wp-includes
$ mv wordpress/wp-includes .
$ rmdir wordpress

मैंने बाद में सिर्फ इसलिए किया क्योंकि जल्दी में, लेकिन पहले से मौजूद है।
xenoterracide

क्या यह एक कमांड का उपयोग करना संभव होगा जो छीपे हुए घटक (उदाहरण wordpress) के नामकरण की स्पष्ट रूप से आवश्यकता नहीं है ? मुझे इसकी ज़रूरत तब पड़ती है जब मैं GitHub का टारबॉल बनाता हूं जिसमें स्ट्रिप्ड घटक में git संशोधन होता है जिसे मैं पहले से नहीं जानता।
tjanez
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.