Trong dòng lệnh bash của tôi, khi tôi sử dụng, unzip -l test.zip
tôi nhận được đầu ra như thế này:
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
Nhưng tôi chỉ quan tâm bởi các dòng có chứa các chi tiết tập tin.
Tôi đã cố gắng thực hiện lọc bằng grep như thế này:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
Nhưng nó dài và dễ bị lỗi (ví dụ: tên tệp Lưu trữ trong danh sách này sẽ bị loại bỏ)
Có bất kỳ tùy chọn nào khác với unzip -l (Tôi đã kiểm tra trang man giải nén và không tìm thấy bất kỳ) hoặc công cụ khác để làm như vậy?
Điều quan trọng với tôi là không thực sự giải nén tệp lưu trữ mà chỉ để xem những tập tin bên trong.
grep
có thể được tái cấu trúc thành tập lệnh Awk, thường với độ chính xác được cải thiện nhiều.awk 'NR >3 { if (/^ *---/) exit 0; print }'
sẽ cắt ba dòng đầu tiên cũng như chân trang và cũng có thể dễ dàng trích xuất tên tệp (gợi ýprint substr($0, 29)
:).