Biểu hiện thông thường
Để sử dụng regex, bạn cũng có thể thử find-lisp-find-dired
. Lệnh này thuộc về lib tiêu chuẩn. find-lisp , được viết hoàn toàn bằng elisp, tức là bạn không cần phải cài đặt một find
chương trình bên ngoài
.
Chẳng hạn, phần sau đây hiển thị tất cả các tệp có phần mở rộng '.el' trong thư mục ~ / lisp:
M-x find-lisp-find-dired RET ~/lisp RET \.el\' RET
(Trận đấu vinh danh case-fold-search
).
Ký tự đại diện
Điều đáng lưu ý là kể từ khi phát hành Emacs tiếp theo (v26.1) Dired hỗ trợ wilcards trong phần thư mục của đối số tên tệp. Điều đó có nghĩa là các công việc sau đây:
C-x d ~/soft/*/*.c RET
(Trận đấu là trường hợp nhạy cảm).
Lệnh này hiển thị trong bộ đệm có hướng Tất cả các tệp có phần mở rộng '.c', 2 mức độ sâu dưới '~ / soft' . Điều đó có nghĩa là, tất cả các tệp như
'~ / soft / foo / bar.c' sẽ được liệt kê, nhưng không phải các tệp như '~ / soft / qux.c'
hay '~ / soft / foo / baz / qux.c' .
Giống nhau nhưng không phân biệt chữ hoa chữ thường:
C-x d ~/soft/*/*.[cC] RET
Tặng kem
Nếu bạn đang chạy Dired với 'ls' được triển khai trong elisp, 'ls-lisp' hoặc 'eshell-ls', thì bạn có thể liệt kê đệ quy tất cả các tệp khớp với ký tự đại diện với cú pháp sau:
C-x d ~/soft/**/*.c RET
Lưu ý '**'. Trong trường hợp này, tất cả các tệp trong '~ / soft' khớp với ký tự đại diện được hiển thị, thậm chí '~ / soft / qux.c' .
Tuy nhiên, khi bạn đang sử dụng insert-directory-program
việc mở rộng ký tự đại diện được tạo bởi trình bao hệ thống; điều đó có nghĩa là, cú pháp đệ quy '**' này chỉ hoạt động nếu được hỗ trợ bởi trình bao của bạn. Ví dụ, zsh không hỗ trợ nó, nhưng bash thì không. Với các shell khác mà zsh, lệnh trước sẽ thực hiện tương tự như:
C-x d ~/soft/*/*.c RET