tar.gz पुरालेख के भीतर एक फ़ाइल खोजें


12

क्या यह findकमांड का उपयोग करना संभव है ताकि यह एक tar.gz संग्रह के भीतर फ़ाइलों का भी उपयोग कर वाइल्डकार्ड का उपयोग कर सके?

पसंद

find archive.tar.gz --name *foo*

जवाबों:


17

कैसे बस के बारे में:

$ tar tf archive.tar.gz | grep foo

नहीं है कि बस सभी फ़ाइलों की सूची?
क्लैंप

@clamp हाँ, यदि आप प्रत्येक फ़ाइल के लिए कुछ करना चाहते हैं, तो बस उस आउटपुट को किसी अन्य कमांड में पाइप करें।

धन्यवाद! क्षमा करें, लेकिन यूनिक्स में एक नौसिखिया im। मैंने कोशिश की: tar tf graphics.tar.gz | find . --name *space*लेकिन यह कहता हैunkown predicate --name
दबाना

@ क्लैंप findतर्क केवल एक डैश लेते हैं, लेकिन क्योंकि यह स्टड पर फ़ाइलों की एक सूची है, आप grepइसके बजाय उपयोग करना चाहते हैं , जैसे हेस्से का उदाहरण कोड। कोशिश करेंtar tf graphics.tar.gz | grep 'space'
केविन

1
grep *foo*एक वैध नियमित अभिव्यक्ति नहीं है। gregग्लब्स को नहीं समझता है, यह नियमित अभिव्यक्ति को समझता है। grep fooइसके बजाय कोशिश करें ।
Alexios

3

निर्देशिका के रूप में संग्रह माउंट करें। आप इसे एवीएफएस फाइलसिस्टम के साथ कर सकते हैं , जो आपको किसी भी संग्रह को एक निर्देशिका के रूप में एक्सेस करने की अनुमति देता है जिसका नाम अनुगामी है #

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'

गज़िप के लिए काम नहीं
वैन एबेल

@vanabel एक gzip फ़ाइल में अन्य फ़ाइलें नहीं हैं। यह सिर्फ एक फ़ाइल है, संपीड़ित। तो अंदर खोज करने के लिए कोई "अंदर" नहीं है।
गिल्स एसओ-

2

मुझे लगता है कि यह बिना पाइप और grep के साथ काम करता है।

इस तरह: tar tvf archive.tar.gz "foo"

इस तरह, ग्लब्स भी काम करेंगे।

tar tvf archive.tar.gz "*.foo"

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