ในบรรทัดคำสั่ง bash ของฉันเมื่อฉันใช้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"
แต่มันยาวและมีแนวโน้มที่จะเกิดข้อผิดพลาด (เช่นชื่อไฟล์ที่เก็บถาวรในรายการนี้จะลดลง)
มีตัวเลือกอื่น ๆ ด้วย unzip -l (ฉันตรวจสอบหน้า man unzip และไม่พบสิ่งใด) หรือเครื่องมืออื่นที่จะทำ?
เป็นสิ่งสำคัญสำหรับฉันที่จะไม่คลายซิปไฟล์เก็บถาวร แต่เพียงเพื่อดูว่าไฟล์อยู่ข้างใน
ใช่ฉันเห็นด้วยอย่างสมบูรณ์นั่นคือเหตุผลที่ฉันถามคำถามนั้นเพื่อให้ได้วิธีที่ดีกว่าและมีศักยภาพ
—
рüффп
grep
สามารถ refactored เป็นสคริปต์ Awk มักจะมีความแม่นยำที่ดีขึ้นมากawk 'NR >3 { if (/^ *---/) exit 0; print }'
จะตัดสามบรรทัดแรกเช่นเดียวกับส่วนท้ายและยังจะอยู่ในมือของได้อย่างง่ายดายเพียงแค่แยกชื่อไฟล์ (คำใบ้:print substr($0, 29)
)