2014-11-24 77 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