Tôi đang tìm kiếm một lệnh đầu cuối để đếm số lượng các mục cấp cao nhất trong kho lưu trữ ZIP. Tôi biết rằng zip -l archive.zip
sẽ hiển thị số lượng tập tin, nhưng điều này hiển thị tất cả các tập tin, không chỉ các mục cấp cao nhất. Nếu archive.zip
sẽ giải nén theo sau (* biểu thị mức cao nhất)
* Dir1
File1
File2
* Dir2
File3
File4
File5
File6
* Dir3
* File7
* File8
sau đó tôi muốn một chương trình để đầu ra 5
.
Điều này cho thấy số lượng các mặt hàng không cấp cao nhất. Nhưng tôi đoán tôi chỉ có thể trừ đi đầu ra
—
BallpointBen
unzip -l archive.zip | grep -v / | wc -l
, phải không? Xin lỗi vì bài viết gốc của tôi không rõ ràng
Nếu bạn bỏ lỡ,
—
AFH
|wc -l
bạn sẽ thấy các tệp được xem xét và đó là các tệp cấp cao nhất. Có một lỗi (!): Nếu đường dẫn lưu trữ chứa một lỗi /
này sẽ được tính, vì vậy bạn cần một bộ lọc bổ sung để loại trừ nó, ví dụ: thay thế grep /
bằng grep "^ .*/"
.
unzip -l archive.zip|grep /|grep -v "/.*/"|wc -l
. Bộ lọc đầu tiên chỉ hiển thị các dòng có tệp, thứ hai loại bỏ các thư mục con và thứ ba trả về số lượng dòng. Nếu kho lưu trữ có đường dẫn tuyệt đối, bạn sẽ cần cho phép hai dấu gạch chéo và loại bỏ ba hoặc nhiều hơn.