Date: Fri, 21 Jun 2019 14:09:53 +1000 From: andrew clarke <mail@ozzmosis.com> To: Polytropon <freebsd@edvax.de> Cc: FreeBSD Questions <freebsd-questions@freebsd.org> Subject: Re: How to un-select files in shell wildcard patterns Message-ID: <20190621040953.65nb47tcifow3y2l@ozzmosis.com> In-Reply-To: <20190621054909.c6ba47ab.freebsd@edvax.de> References: <20190621054909.c6ba47ab.freebsd@edvax.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri 2019-06-21 05:49:09 UTC+0200, Polytropon (freebsd@edvax.de) wrote: > I'm interested in a convenient method to "un-select" files > when using regular (sh) shell wildcards. It's quite easy to > describe things like > > *.tex > > to perform an operation on all LaTeX source files, or > > *a* > > on all files whose name contains (at least) one "a". Patterns > that are based on the inclusion of certain attributes are not > a problem to deal with using the builtin pattern matching of > the shell. > > But what about the opposite? Let's say, perform an operation > on all files _except_ the LaTeX source files, or all files > whose name does _not_ contain an "a"? > > Is there a good method to do this, except creating a kind > of "custom regex wrapper script" that does the selection part, > for further use with `subshell` or | xargs? zsh can do glob exclusion once "extended globbing" is enabled: $ setopt extendedglob List all files except LaTeX source files: $ ls ^*.tex List all files except those with an 'a' character in the name: $ ls ^*a*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190621040953.65nb47tcifow3y2l>