Với zsh
và vòng loại toàn cầu ( e
chuỗi ):
print -rl -- *(/e_'[[ ! -f $REPLY/README ]]'_)
hoặc là
print -rl -- *(/^e_'[[ -f $REPLY/README ]]'_)
thêm D
để bao gồm các thư mục ẩn:
print -rl -- *(D/e_'[[ ! -f $REPLY/README ]]'_)
/
chỉ chọn các thư mục và e_'[[ ! -f $REPLY/README ]]'_
chỉ chọn các tên thư mục mà mã shell giữa các trích dẫn trả về true
, đó là cho mỗi tên thư mục ( $REPLY
) mà toàn cầu *(/)
mở rộng, nó chạy [[ ! -f $REPLY/README ]]
và giữ tên của thư mục nếu kết quả là true
.
Biểu mẫu thứ hai ^e_'.....'_
sử dụng cùng một vòng loại toàn cầu, bị phủ định (nhưng lần này biểu thức điều kiện không bị phủ định [[ -f $REPLY/README ]]
:).
Ở trên sẽ chỉ trả lại tên thư mục trong thư mục hiện tại.
Nếu bạn muốn tìm kiếm đệ quy (một lần nữa, để bao gồm các thư mục ẩn, hãy thêm D
vòng loại):
print -rl ./**/*(/e_'[[ ! -f $REPLY/README ]]'_)