Đây là một câu hỏi kỳ lạ, vì zsh là vỏ duy nhất có tính năng này. Nó được gọi là vòng loại toàn cầu . Hướng dẫn sử dụng, như thường lệ, khá ngắn gọn và không có ví dụ. Trang Zsh-Lovers có một vài ví dụ. Googlingzsh "glob qualifiers"
bật lên một vài bài viết và hướng dẫn blog. Bạn cũng có thể tìm kiếm "glob qualifier"
trên trang web này .
Khái niệm cơ bản: vòng loại toàn cầu nằm trong ngoặc đơn ở cuối toàn cầu. Những cái hữu ích nhất là các dấu chấm câu để chỉ chọn một số loại tệp nhất định.
echo *(/) # directories
echo *(.) # regular files
echo *(@) # symbolic links
echo *(-/) # directories and symbolic links to directories
Có các vòng loại khác để lọc trên siêu dữ liệu như kích thước, ngày và quyền sở hữu.
# files owned by the user running zsh, over 1MB, last modified more than 7 days ago
echo *(ULm+1m+7)
Vòng loại Glob cũng có thể kiểm soát thứ tự các trận đấu và hạn chế số lượng trận đấu.
echo *(Om[1,10]) # The 10 oldest files
Bạn có thể thiết lập các bộ lọc tùy ý bằng cách gọi một hàm, với +
vòng loại (thậm chí bạn có thể đặt mã nội tuyến với e
vòng loại, nếu bạn không bận tâm đến việc trích dẫn khó hiểu).
Lưu ý rằng thật không may, tất cả những điều này chỉ hoạt động trên các khối. Nếu bạn muốn xây dựng một danh sách các tên tệp theo cách này, bạn cần lọc khi bạn đang toàn cầu hóa. Nếu bạn muốn lọc một danh sách mà bạn đã xây dựng, có một cú pháp mở rộng tham số hoàn toàn khác, chỉ có thể thực hiện lọc văn bản đơn giản ( "${(@)ARRAY:#PATTERN}"
).
EXTENDED_GLOB
tùy chọn, bạn có thể sử dụng các toán tử toàn cầu^x
và cho các loại trừ dựa trên tên đường dẫn trong khi toàn cầu hóa (à la ).x~y
grep -v