Làm cách nào để lọc một quả cầu trong zsh


7

Về cơ bản tôi có thể sử dụng một địa cầu trong zsh vào một danh sách. Thông thường, hóa ra, tôi muốn lọc danh sách đó, mặc dù tôi đang tự hỏi, nếu tôi cần phải làm điều đó.

Zsh có phương pháp để lọc danh sách không? Tôi sợ rằng đây là một câu hỏi rõ ràng, nhưng hôm nay nó là một ngày năng suất thấp.

Câu trả lời:


14

Đâ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 evò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}").


2
Ngoài ra, với EXTENDED_GLOBtù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
Chris Johnsen

Mở rộng tham số là điều. Cảm ơn câu trả lời hoàn toàn đầy đủ. Đánh giá cao.
chiggsy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.