Vì Bash 4 (bao gồm cả zsh), một tùy chọn toàn cầu mới ( globstar
) đã được thêm vào để xử lý mẫu **
khác nhau khi được đặt.
Nó phù hợp với mẫu ký tự đại diện và trả về tên tệp và thư mục khớp với nhau bằng cách thay thế mẫu ký tự đại diện trong lệnh bằng các mục khớp.
Thông thường khi bạn sử dụng **
, nó hoạt động tương tự *
, nhưng nó đệ quy tất cả các thư mục theo cách đệ quy (như một vòng lặp).
Để xem nếu nó được kích hoạt, hãy kiểm tra nó bằng cách shopt globstar
(trong kịch bản, sử dụng shopt -q globstar
).
Ví dụ **.py
này chỉ hoạt động cho thư mục hiện tại, vì nó không trả về danh sách các thư mục có thể được đệ quy, vì vậy đó là lý do tại sao bạn cần sử dụng nhiều ký tự đại diện cấp thư mục **/*.py
, để nó có thể đi sâu hơn.
Vui lòng tìm trên SO vài bài kiểm tra cú pháp mà tôi đã làm để tìm tất cả các tệp đệ quy.
nullglob