hello, On Mon, Jul 28, 2025 at 09:25:26AM -0500, Perry Smith wrote: > I’m assuming that pat of the expression ^pat is a glob pattern. And > x^y: my guess is that both x and y are glob patterns. if you read the 'FILENAME GENERATION' section from zshexpn, you'll see that ^x exists, x~y exists but there is no thing such x^y. don't hesitate to ask for more help if you want some. In the meanwhile, maybe you should be aware of the (e::) modifier which can run arbritrary test for each matched files files=( bob bill bibi bobybibi ) for REPLY ($files) { (( $(<<< $REPLY tr -dc b | wc -c ) < 3 )) && echo $REPLY } touch $files print -l *(e:'(($(<<< $REPLY tr -dc b | wc -c ) < 3 ))':) for readability sake, it's better declare a function no_more_than() (( $( <<< ${3:-$REPLY} | tr -dc ${2?undesirable caracter} | wc -c ) < ${1?limit} )) no_more_than 3 b bobybibi || echo bad bad boy ls *(e:'no_more_than 3 b':) be aware that the filter is executed for *each* files so if you have many files, a better solution is to rely on a command that stream a list of files to a filter. you can use stest (a tool from suckless.org) ls | stest -f # only files but when the thing is harder, perl is your swiss chainsaw! ls | perl -lnE 'print unless -f && y/b// > 3' # -f test if the line contains a filename # y/// is like tr -d b but it returns the number of substitutions regards -- Marc Chantreux Pôle CESAR (Calcul et services avancés à la recherche) Université de Strasbourg 14 rue René Descartes, BP 80010, 67084 STRASBOURG CEDEX 03.68.85.60.79
Attachment:
signature.asc
Description: PGP signature