एक उपनिर्देशिका में tar'd फ़ाइलें रखो


8

मेरे पास निम्नलिखित की तरह एक निर्देशिका सेटअप है:

folder_x
file.y
file.z

मैं एक टार फ़ाइल बनाना चाहूंगा ताकि जब इसे निकाला जाए तो संरचना कुछ इस तरह दिखेगी:

dir_q/folder_x
dir_q/file.y
dir_q/file.z

मैं इसका उपयोग करके tarकैसे काम कर सकता हूं ? संदर्भ के लिए, वर्तमान कमांड जो मैं उपयोग कर रहा हूं वह है:

tar -czf archive.tar.gz file.y file.z folder_x

जवाबों:


9

मैंने कभी भी --transform विकल्प का उपयोग नहीं किया है, लेकिन मैं इसे इकट्ठा करता हूं जो आपको चाहिए:

tar -czf archive.tar.gz --transform 's,^,dir_q/,' file.y file.z folder_x

विभाजक के ,बजाय उपयोग का एहसास करें /, इसलिए हम एक अनुगामी स्लैश जोड़ सकते हैं।


हम्म, यह ठीक से कर नहीं लगता है: file.z-> dirfile.zऔर dirfolder_x। मैं regex के साथ भी खेलता हूँ और देखता हूँ कि क्या मैं इसे वैसे ही प्राप्त कर सकता हूँ जैसा मैं चाहता हूँ।

1
यहां बताया गया है कि मैं यह कैसे करता हूं: tar -czf ark.tar.gz --transform 's, ^, dir_q /,' file.y file.z folder_x Sed अनुमति देता है / के बजाय /, अस्पष्टता से बचने के लिए जब आपकी अभिव्यक्ति में आगे स्लैश होता है। । आम तौर पर मैं कहूंगा कि आप बैकस्लैश के साथ स्लैश से बच सकते हैं, लेकिन सेड (कम से कम, ग्नू सेड) इसकी सही व्याख्या नहीं करता है।
jdb

tar --transform MacOS पर काम नहीं करता है
अलेक्जेंडर मिल्स

MacOS में आप --transform विकल्प प्राप्त करने के लिए macports और gnutar स्थापित कर सकते हैं। या स्वयं गटर को डाउनलोड और संकलित करें।
मार्निक्स ए। वैन एम्मर्स

1

यदि आपको नई निर्देशिका बनाने में कोई आपत्ति नहीं है ...

mkdir dir_q; टार्क -C $ _ -xzvf आर्काइव। tar.gz

वैकल्पिक रूप से, एक नई निर्देशिका बनाएं, उस निर्देशिका में फ़ाइल को अनटार करें, फिर इसे निकाले गए संस्करण में नाम शामिल करने के लिए मूल निर्देशिका से पुनः टारगेट करें। इस तरह से आपको कुछ सुपर लॉन्ग इंवोकेशन याद नहीं करना पड़ेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.