2014-11-24 60 views
4

假设我有以下目录结构:zsh的水珠预选赛

$ mkdir -p a/1 
$ ln -s a b 

通配符的目录,我得到的目录符号链接中太:

$ print -l */*(/) 
a/1 
b/1 

我怎么能限制将第一个目录级别设置为只包含目录,不包括符号链接?显然不起作用:

$ print -l *(/)/*(/) 
zsh: bad pattern: *(/)/*(/) 

更一般地,我如何为中间路径组件指定glob限定符?在精神:

$ print -l a(...)/b(...)/c(...)/d(...)/e(...)/f(...) 

其中(...)表示用于相应路径构件水珠限定符。

+0

也许你所问的一个特例,但''**不遵循符号链接。在你的例子中'print -l **/1'只能匹配'a/1',而不是'b/1'。 – chepner 2015-05-17 18:53:22

回答

0

documentation表明水珠限定符可以仅在图案的端部可以使用:用于文件名生成

图案可以包含在括号限定符的列表结束。限定符指定与给定模式匹配的文件名将被插入到参数列表中。

虽然比水珠不太方便,你想达到什么可以用find来完成:

find -H . ! -path . -type d -links 2 | xargs 
./a/1