Zsh 模式匹配全解析
1. 模式异常
在日常操作中,我们有时会有这样的需求,比如“我需要一个以 m 开头,但不以 .txt 结尾的文件”。在 zsh 里,我们可以通过指定模式异常来实现这个需求。具体语法是:必须匹配的模式,后面跟着波浪号 ~ ,再跟着不能匹配的模式。
以下是示例:
zsh% echo m*
msg msg.out msg.txt
zsh% echo m*~*.txt
msg msg.out
~ 操作符和之前提到的 ^ 操作符有所不同。我们可以用 ^ 重写上面的例子:
zsh% echo m^*.txt
msg msg.out
不过,使用 ~ 的例子会更清晰一些,因为 m*~*.txt 中波浪号前后的部分都针对整个文件名。
需要注意的是, ~ 右边的所有内容,包括斜杠,都被视为一个模式。所以, ~ 后面的 * 可以跨多个目录匹配。例如:
zsh% echo **/*.c
config.c Src/Lib/Utils/prog.c
zsh% echo **/*.c~Src/*
config.c
<
Zsh模式匹配详解
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



