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

时间:2016-06-03 20:30:03

标签: 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-sq.png

如何指定排除模式以显示除那些之外的所有文件 包含ck个字符在文件名中的任何位置粘在一起吗?

所以在结果列表中,文件:

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

我试了这个没有成功。

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

1 个答案:

答案 0 :(得分:2)

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

print -l -- *.png~*ck*

您可以将*~THAT缩写为^THAT(也需要extended_glob),因此如果您不想限制为.png个文件,则可以使用< / p>

print -l -- ^*ck*