मेरी बैश कमांड लाइन में, जब मैं उपयोग करता unzip -l test.zip
हूं तो मुझे इस तरह से आउटपुट मिलता है:
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
810000 05-07-2014 15:09 file1.txt
810000 05-07-2014 15:09 file2.txt
810000 05-07-2014 15:09 file3.txt
--------- -------
2430000 3 files
लेकिन मुझे केवल फाइल विवरण वाली लाइनों से ही दिलचस्पी है।
मैंने इस तरह grep का उपयोग करके फ़िल्टरिंग बनाने की कोशिश की:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
लेकिन यह लंबी है और त्रुटि के लिए प्रवण है (उदाहरण के लिए इस सूची में एक फ़ाइल नाम संग्रह को छोड़ दिया जाएगा)
क्या अनज़िप-एल के साथ कोई अन्य विकल्प है (मैंने अनज़िप मैन पेज की जाँच की और ऐसा नहीं पाया) या ऐसा करने के लिए कोई अन्य उपकरण?
मेरे लिए यह महत्वपूर्ण है कि संग्रह को वास्तव में अनज़िप न करें, लेकिन केवल यह देखने के लिए कि कौन सी फाइलें अंदर हैं।
grep
एक Awk स्क्रिप्ट में बदला जा सकता है, आमतौर पर बहुत सुधार के साथ।awk 'NR >3 { if (/^ *---/) exit 0; print }'
पहली तीन पंक्तियों के साथ-साथ पाद लेख को भी ट्रिम करेगा, और केवल फ़ाइल नाम (संकेत:) को आसानी से निकालने की पहुंच के भीतर होगाprint substr($0, 29)
।