Expression régulière
Pour utiliser une expression régulière, vous pouvez également essayer find-lisp-find-dired
. Cette commande appartient à la bibliothèque standard. find-lisp , qui est entièrement écrit en elisp, c'est-à-dire que vous n'avez pas besoin d'avoir installé un find
programme externe
.
Par exemple, ce qui suit montre tous les fichiers avec l'extension '.el' dans le répertoire ~ / lisp:
M-x find-lisp-find-dired RET ~/lisp RET \.el\' RET
(Le match honore case-fold-search
).
Caractère générique
Il convient de noter que depuis la prochaine version d'Emacs (v26.1), Dired prend en charge les wilcards dans la partie répertoire de l'argument du nom de fichier. Cela signifie les travaux suivants:
C-x d ~/soft/*/*.c RET
(La correspondance est sensible à la casse).
Cette commande affiche dans un tampon Dired tous les fichiers avec l'extension '.c', 2 niveaux de profondeur sous '~ / soft' . Cela signifie que tous les fichiers comme
«~ / soft / foo / bar.c» seront répertoriés, mais pas les fichiers comme «~ / soft / qux.c»
ni «~ / soft / foo / baz / qux.c» .
Le même mais insensible à la casse:
C-x d ~/soft/*/*.[cC] RET
Prime
Si vous exécutez Dired avec un 'ls' implémenté dans elisp, 'ls-lisp' ou 'eshell-ls', vous pouvez alors lister récursivement tous les fichiers correspondant à un caractère générique avec la syntaxe suivante:
C-x d ~/soft/**/*.c RET
Noter la '**'. Dans ce cas, tous les fichiers sous «~ / soft» correspondant au caractère générique sont affichés, même «~ / soft / qux.c» .
Cependant, lorsque vous utilisez insert-directory-program
l'extension, le caractère générique est effectué par le shell système; cela signifie que cette syntaxe récursive '**' ne fonctionne que si elle est prise en charge par votre shell. Par exemple, zsh le supporte, mais bash ne le fait pas. Avec les shells autres que zsh, la commande précédente fera la même chose que:
C-x d ~/soft/*/*.c RET