Wyrażenie regularne
Aby użyć wyrażenia regularnego, możesz także spróbować find-lisp-find-dired
. To polecenie należy do standardowej biblioteki lib. find-lisp , który jest w całości napisany w elisp, tzn. nie musisz instalować zewnętrznego
find
programu.
Na przykład poniżej pokazano wszystkie pliki z rozszerzeniem „.el” w katalogu ~ / lisp:
M-x find-lisp-find-dired RET ~/lisp RET \.el\' RET
(Mecz honoruje case-fold-search
).
Dzika karta
Warto zauważyć, że od następnej wersji Emacsa (v26.1) Dired obsługuje wilcards w części katalogowej argumentu nazwy pliku. Oznacza to, że następujące prace:
C-x d ~/soft/*/*.c RET
(W dopasowaniu rozróżniana jest wielkość liter).
To polecenie pokazuje w buforze Dired wszystkie pliki z rozszerzeniem „.c”, 2 poziomy głębi w „~ / soft” . Oznacza to, że zostaną wyświetlone wszystkie pliki, takie jak
„~ / soft / foo / bar.c” , ale nie pliki takie jak „~ / soft / qux.c”
ani „~ / soft / foo / baz / qux.c” .
To samo, ale bez rozróżniania wielkości liter:
C-x d ~/soft/*/*.[cC] RET
Premia
Jeśli używasz Dired z literą „ls” zaimplementowaną w elisp, „ls-lisp” lub „eshell-ls”, możesz rekurencyjnie wyświetlić listę wszystkich plików pasujących do znaku wieloznacznego o następującej składni:
C-x d ~/soft/**/*.c RET
Zanotuj '**'. W takim przypadku wyświetlane są wszystkie pliki w polach „ ~ / soft” pasujące do symbolu wieloznacznego, nawet „~ / soft / qux.c” .
Jednak podczas korzystania insert-directory-program
z symboli wieloznacznych rozszerzenie jest dokonywane przez powłokę systemową; oznacza to, że ta rekurencyjna składnia „**” działa tylko, jeśli jest obsługiwana przez powłokę. Na przykład zsh go obsługuje, ale bash nie. W przypadku powłok innych niż zsh poprzednie polecenie zrobi to samo co:
C-x d ~/soft/*/*.c RET