Вы уже подумали "найти имя по имени"? (Использует подстановочный знак, а не регулярные выражения.)
Marco Wahl
2
Вы должны представить это как ответ @MarcoWahl. Я понятия не имел, что мог сделать это!
Тайлер
1
Библиотека find-dired+.elдает вам расширенную версию команды find-name-dired. Он принимает необязательные аргументы, которые указывают (1) минимальную и максимальную глубины поиска и (2) пути, которые необходимо исключить из поиска.
Дрю
Ответы:
11
Wildcard
использование
M-x find-name-dired
получить файлы в соответствии с подстановочным знаком.
пример
Найдите все файлы с суффиксом "org" в каталоге "~ / org /". Введите следующее
M-x find-name-dired
~/org
*org
и наслаждаться.
Регулярное выражение
использование
M-x find-dired
с подходящими аргументами, чтобы получить файлы в соответствии с регулярным выражением.
пример
Найдите все файлы с суффиксом "org" в каталоге "~ / org /". Введите следующее
Можно ли автоматизировать этот процесс, где автоматически проверять, *orgне вводя его вручную
Alper
Если я вас правильно понимаю, есть много возможностей. Например, создайте специальную команду seach с помощью (defun my-find-orgfiles () (интерактивный) (find-name-dired "~ / myorgs /" "* org")) и поместите ее в файл инициализации. Затем используйте Mx my-find-orgfiles RET. Или даже связать команду с ключом.
Марко Валь
Можно ли my-find-orgfiles ()после "t" и "Q" // выбрать все и применить? @Marco Wahl
Alper
2
Регулярное выражение
Чтобы использовать регулярные выражения, вы также можете попробовать 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).
Wildcard
Стоит отметить, что со следующего выпуска Emacs (v26.1) Dired поддерживает wilcards в каталожной части аргумента имени файла. Это означает, что следующие работы:
C-x d ~/soft/*/*.c RET
(Совпадение чувствительно к регистру).
Эта команда показывает в буфере Dired все файлы с расширением «.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, предыдущая команда будет делать то же самое, что и:
find-dired+.el
дает вам расширенную версию командыfind-name-dired
. Он принимает необязательные аргументы, которые указывают (1) минимальную и максимальную глубины поиска и (2) пути, которые необходимо исключить из поиска.Ответы:
Wildcard
использование
получить файлы в соответствии с подстановочным знаком.
пример
Найдите все файлы с суффиксом "org" в каталоге "~ / org /". Введите следующее
и наслаждаться.
Регулярное выражение
использование
с подходящими аргументами, чтобы получить файлы в соответствии с регулярным выражением.
пример
Найдите все файлы с суффиксом "org" в каталоге "~ / org /". Введите следующее
и наслаждаться.
источник
*org
не вводя его вручнуюmy-find-orgfiles ()
после "t" и "Q" // выбрать все и применить? @Marco WahlРегулярное выражение
Чтобы использовать регулярные выражения, вы также можете попробовать
find-lisp-find-dired
. Эта команда относится к стандартному lib. find-lisp , который полностью написан на elisp, т.е. вам не нужно устанавливать внешнююfind
программу.Например, ниже показаны все файлы с расширением '.el' в каталоге ~ / lisp:
(Матч наград
case-fold-search
).Wildcard
Стоит отметить, что со следующего выпуска Emacs (v26.1) Dired поддерживает wilcards в каталожной части аргумента имени файла. Это означает, что следующие работы:
(Совпадение чувствительно к регистру).
Эта команда показывает в буфере Dired все файлы с расширением «.c», 2 уровня глубины в «~ / soft» . Это означает, что будут перечислены все файлы, такие как «~ / soft / foo / bar.c» , но не такие файлы, как «~ / soft / qux.c» или «~ / soft / foo / baz / qux.c» .
То же самое, но без учета регистра:
бонус
Если вы используете Dired с 'ls', реализованным в elisp, 'ls-lisp' или 'eshell-ls', то вы можете рекурсивно перечислить все файлы, соответствующие шаблону, со следующим синтаксисом:
Обратите внимание '**'. В этом случае отображаются все файлы в «~ / soft», соответствующие шаблону, даже «~ / soft / qux.c» .
Однако при использовании
insert-directory-program
подстановочного знака расширение производится системной оболочкой; это означает, что этот рекурсивный синтаксис '**' просто работает, если он поддерживается вашей оболочкой. Например, zsh поддерживает это, а bash - нет. С оболочками, отличными от zsh, предыдущая команда будет делать то же самое, что и:источник