假设我有以下目录结构:
$ mkdir -p a/1
$ ln -s a b
Run Code Online (Sandbox Code Playgroud)
搜索目录,我也得到了符号链接中的目录:
$ print -l */*(/)
a/1
b/1
Run Code Online (Sandbox Code Playgroud)
如何将第一个目录级别的通配限制为仅目录,不包括符号链接?显而易见的不起作用:
$ print -l *(/)/*(/)
zsh: bad pattern: *(/)/*(/)
Run Code Online (Sandbox Code Playgroud)
更一般地说,如何为中间路径组件指定 glob 限定符?在精神上:
$ print -l a(...)/b(...)/c(...)/d(...)/e(...)/f(...)
Run Code Online (Sandbox Code Playgroud)
其中(...)
表示各个路径组件的全局限定符。
文档建议glob 限定符只能在模式末尾使用:
用于文件名生成的模式可能以括号内的限定符列表结尾。限定符指定将在参数列表中插入哪些与给定模式匹配的文件名。
虽然不如 glob 方便,但您想要实现的目标可以通过以下方式完成find
:
find -H . ! -path . -type d -links 2 | xargs
./a/1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2643 次 |
最近记录: |