路径中间的zsh glob限定符

时间:2014-11-24 10:35:57

标签: zsh

假设我有以下目录结构:

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

对目录进行Globbing,我也得到了符号链接中的目录:

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

如何将第一个目录级别的globbing限制为仅限目录,不包括符号链接?显而易见的不起作用:

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

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

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

其中(...)表示相应路径组件的glob限定符。

1 个答案:

答案 0 :(得分:0)

documentation表明只有在模式结束时才能使用glob限定符:

  

用于生成文件名的模式可以以括在括号中的限定符列表结尾。限定符指定哪些与给定模式匹配的文件名将插入参数列表中。

虽然不如使用glob方便,但您尝试实现的目标可以通过find完成:

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