这是行不通的:~/xy*~~/xyz*
.
我知道这是$HOME/xy*~$HOME/xyz*
可行的,但我想知道是否有一种方法可以使用以 开头的路径前缀(~
例如~/
or~user/
或 )达到相同的效果~nameddir/
。
答案1
在这里,您可以执行~/xy^z*
或~/xy(*~z*)
。
答案2
基本上,您期望 shell 将波浪号扩展到$HOME
单词的开头和中间的某个位置,但这种情况不会发生:第一个~
将扩展到$HOME
但不会扩展到其他(在这种情况下,由于extendedglob
被设置) ,它们被视为全局运算符)...
如上所述,有很多方法可以做到这一点 - 甚至桑迪普的建议是可以的,因为zsh
理解ksh
-like glob(这是bash
复制它们的地方):
setopt kshglob
setopt nobareglobqual
print -rl ~/xy?([^z]*)
答案3
您可以执行否定:
~/(xy|xy[^z]*)
或更短:
~/xy(|[^z]*)