रेगुलर एक्सप्रेशंस का उपयोग करके TAR आर्काइव से फाइल्स को बाहर कैसे करें?


10

मेरे पास एक सरल प्रश्न है, फिर भी मैं उत्तर नहीं ढूँढ सकता या हल नहीं कर सकता। मैं एक टार संग्रह बनाना चाहता हूं, लेकिन मैं कुछ फ़ाइलों को नियमित अभिव्यक्ति का उपयोग करके इसे बाहर करना चाहता हूं।

फ़ाइल को बाहर करने का उदाहरण यह है: 68x640X480.jpg

मैंने बिना किसी भाग्य के यह कोशिश की है:

tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto

क्या कोई मदद कर सकता है?

जवाबों:


11

आप कुछ अतिरिक्त उपकरणों का उपयोग कर सकते हैं जैसे findऔर egrep:

find directory/ -type f -print | egrep -v '[0-9]+x[0-9X]+\.jpg' | tar cvfz directory.tar.gz -T -

उपर्युक्त विधि का दोष यह है कि यह सभी संभव फ़ाइल नामों के लिए काम नहीं करेगा। एक अन्य अवसर अंतर्निहित कार्यक्षमता का उपयोग करने के लिए है tar:

tar -czvf directory.tar.gz --exclude='*x*X*.jpg' directory

दुर्भाग्य से दूसरी विधि नियमित अभिव्यक्तियों के साथ काम नहीं करती है, लेकिन केवल वाइल्डकार्ड के साथ।


धन्यवाद, यह वही है जिसकी मुझे तलाश थी। क्या आप कृपया नोट कर सकते हैं कि कौन से फ़ाइल नाम काम नहीं करेंगे? क्या पात्रों युक्त?
फ्रोडिक

आपको इसके बारे में बहुत चिंता नहीं करनी चाहिए - अधिकांश फ़ाइल नाम उस समाधान के साथ पूरी तरह से ठीक काम करते हैं। समस्या यह है कि UNIX / Linux फ़ाइल नामों में बहुत अधिक सब कुछ शामिल हो सकता है, यहां तक ​​कि पात्रों को भी नियंत्रित कर सकता है - ऐसे अस्पष्ट संयोजन पहले समाधान के साथ काम नहीं करेंगे।
व्लादिमीर ब्लास्कोव

UNIX / Linux / POSIX फ़ाइल नाम से संबंधित एक अच्छा पढ़ा: dwheeler.com/essays/fixing-unix-linux-filenames.html
व्लादिमीर ब्लास्कोव

0

शायद आपको cpio ट्राई करना चाहिए

http://cybertiggyr.com/cpio-howto

यह फ़ाइल सूची से पढ़ता है और संग्रह करता है। आप नीचे दिए गए सेड की तरह फाइल लिस्ट जनरेट कर सकते हैं।

ls |sed   '/[0-9]*x[0-9]*X.*/d' >/tmp/files

फिर आप इसे cpio के इनपुट के रूप में उपयोग कर सकते हैं।

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