Регулярна виразність
Щоб скористатися регулярним виразом, ви також можете спробувати find-lisp-find-dired
. Ця команда належить до стандартної lib. find-lisp , який повністю написаний на elisp, тобто вам не потрібно встановлювати зовнішню
find
програму.
Наприклад, нижче показано всі файли з розширенням '.el' під каталогом ~ / lisp:
M-x find-lisp-find-dired RET ~/lisp RET \.el\' RET
(Матч відзначається case-fold-search
).
Уайлдкард
Варто зазначити, що з наступного випуску Emacs (v26.1) Dired підтримує wilcards в частині каталогу аргументу імені файлу. Це означає такі роботи:
C-x d ~/soft/*/*.c RET
(Збіг залежить від регістру).
Ця команда відображає в буфері «Дабрі» всі файли з розширенням '.c', 2 рівні глибини під '~ / soft' . Це означає, що всі файли типу
'~ / soft / foo / bar.c' будуть перераховані, але не такі файли, як '~ / soft / qux.c'
ні '~ / soft / foo / baz / qux.c' .
Те саме, але нечутливе до регістру:
C-x d ~/soft/*/*.[cC] RET
Бонус
Якщо у вас працює Dired із 'ls', реалізованим у elisp, 'ls-lisp' або 'eshell-ls', ви можете рекурсивно перелічити всі файли, що відповідають підстановці із наступним синтаксисом:
C-x d ~/soft/**/*.c RET
Зверніть увагу на "**". У цьому випадку відображаються всі файли в розділі "~ / soft", що відповідає підстановці, навіть "~ / soft / qux.c" .
Однак, коли ви використовуєте insert-directory-program
підстановку, розширення відбувається за допомогою оболонки системи; це означає, що цей рекурсивний синтаксис '**' просто працює, якщо він підтримується вашою оболонкою. Наприклад, zsh підтримує його, але bash - ні. З іншими оболонками, які zsh, попередня команда зробить те саме, що:
C-x d ~/soft/*/*.c RET