Function: eshell-extended-glob
eshell-extended-glob is a byte-compiled function defined in
em-glob.el.gz.
Signature
(eshell-extended-glob GLOB)
Documentation
Return a list of files matched by GLOB.
If no files match, signal an error (if eshell-error-if-no-glob
is non-nil), or otherwise return GLOB itself.
This function almost fully supports zsh style filename generation syntax. Things that are not supported are:
^foo for matching everything but foo
(foo~bar) tilde within a parenthesis group
foo<1-10> numeric ranges
foo~x(a|b) (a|b) will be interpreted as a predicate/modifier list
Mainly they are not supported because file matching is done with Emacs regular expressions, and these cannot support the above constructs.
Source Code
;; Defined in /usr/src/emacs/lisp/eshell/em-glob.el.gz
(defun eshell-extended-glob (glob)
"Return a list of files matched by GLOB.
If no files match, signal an error (if `eshell-error-if-no-glob'
is non-nil), or otherwise return GLOB itself.
This function almost fully supports zsh style filename generation
syntax. Things that are not supported are:
^foo for matching everything but foo
(foo~bar) tilde within a parenthesis group
foo<1-10> numeric ranges
foo~x(a|b) (a|b) will be interpreted as a predicate/modifier list
Mainly they are not supported because file matching is done with Emacs
regular expressions, and these cannot support the above constructs."
(let ((globs (eshell-glob-convert glob))
eshell-glob-matches message-shown)
(unwind-protect
(apply #'eshell-glob-entries globs)
(if message-shown
(message nil)))
(or (and eshell-glob-matches (sort eshell-glob-matches #'string<))
(if eshell-error-if-no-glob
(error "No matches found: %s" glob)
glob))))