假设我有以下目录结构:
$ 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限定符。
答案 0 :(得分:0)
documentation表明只有在模式结束时才能使用glob限定符:
用于生成文件名的模式可以以括在括号中的限定符列表结尾。限定符指定哪些与给定模式匹配的文件名将插入参数列表中。
虽然不如使用glob方便,但您尝试实现的目标可以通过find
完成:
find -H . ! -path . -type d -links 2 | xargs
./a/1