列出文件名中不包含模式的文件(仅限zsh)

列出文件名中不包含模式的文件(仅限zsh),zsh,Zsh,假设我在dir中有一个文件列表,如下所示: blackneasy-sq.png dima-sq.png envoy-sq.png fox-sq.png freeze-sq.png ministarstvo kulture-sq.png naxi-sq.png pick-sq.png pink-sq.png wink-sq.png brick-sq.png rider-sq.png sixt-rent-a-car.png slavija hotel-sq.png temet-sq.png tepe

假设我在dir中有一个文件列表,如下所示:

blackneasy-sq.png
dima-sq.png
envoy-sq.png
fox-sq.png
freeze-sq.png
ministarstvo kulture-sq.png
naxi-sq.png
pick-sq.png
pink-sq.png
wink-sq.png
brick-sq.png
rider-sq.png
sixt-rent-a-car.png
slavija hotel-sq.png
temet-sq.png
tepe-sq.png
我如何指定排除模式来显示除以下文件之外的所有文件 是否在文件名的任何位置包含粘合在一起的字符

因此,在结果列表中,文件:

blackneasy-sq.png
pick-sq.png
brick-sq.png
不应显示

我试过了,但没有成功

print -l [[:alpha:]]*^ck*.*

使用
~
运算符:
THIS~
匹配与模式
THIS
匹配的文件,而不是
THIS
。这需要
extended_glob
选项(该选项在某些上下文中自动打开,如完成功能,但不是默认状态)

您可以将
*~THAT
缩写为
^THAT
(也需要
扩展的\u glob
),因此如果您不想限制为
.png
文件,可以使用

print -l -- ^*ck*

使用
~
运算符:
THIS~
匹配与模式
THIS
匹配的文件,而不是
THIS
。这需要
extended_glob
选项(该选项在某些上下文中自动打开,如完成功能,但不是默认状态)

您可以将
*~THAT
缩写为
^THAT
(也需要
扩展的\u glob
),因此如果您不想限制为
.png
文件,可以使用

print -l -- ^*ck*

有没有办法让
[[:alpha:]
不急于使用
*
#
或者它总是尽可能多地消耗@布兰基多和布兰基托总是渴望成功。但是,只有当你有了capture group,而不仅仅是regex匹配时,渴望才是重要的。同样好奇的是,如果不是因为
THIS~ THAT
,有没有可能在没有grep或其他什么帮助的情况下以其他方式实现这一点?Thanks@branquito
grep
将很难使用,除非您知道您的文件名不能包含任何特殊字符。执行此操作的简单方法是*.png中x的
;*ck*)中的“$x”是否继续;;以撒;{进程$x};完成
@branquito
[[:alpha:][]*^ck
匹配任何以字母开头并以非字母结尾的内容。由于
ck
可以与
*
匹配,
[:alpha:]*^ck
匹配任何以字母开头的内容。渴望也无济于事:他们仍然允许明星想匹配多久就匹配多久,当有几种可能的匹配方式时,渴望只是一种偏好。有没有办法让
[:alpha:]
不渴望
*
#
或者总是尽可能多地消耗呢@布兰基多和布兰基托总是渴望成功。但是,只有当你有了capture group,而不仅仅是regex匹配时,渴望才是重要的。同样好奇的是,如果不是因为
THIS~ THAT
,有没有可能在没有grep或其他什么帮助的情况下以其他方式实现这一点?Thanks@branquito
grep
将很难使用,除非您知道您的文件名不能包含任何特殊字符。执行此操作的简单方法是*.png中x的
;*ck*)中的“$x”是否继续;;以撒;{进程$x};完成
@branquito
[[:alpha:][]*^ck
匹配任何以字母开头并以非字母结尾的内容。由于
ck
可以与
*
匹配,
[:alpha:]*^ck
匹配任何以字母开头的内容。渴望也无济于事:他们仍然允许明星想匹配多久就匹配多久,当有几种可能的匹配方式时,渴望只是偏好的问题。