21

Ruby では、Dir.glob("**/*.rb")(たとえば) シンボリック リンクされたディレクトリをトラバースしません。**シンボリックリンクをトラバースすることは可能ですか?

この方法でファイルを見つける 2 つの gem を使用していますが、シンボリック リンクされたディレクトリ内のファイルを表示するにはそれらが必要です。

4

2 に答える 2

36

Jonathan の巧妙で狡猾なアプローチは素晴らしく、数個のアスタリスクをフリックするだけで、シンボリック リンクの大群を切り裂くことができます。ただし、直接の子の一致を返さないという不幸な副作用があります。改善されたバージョンは次のようになります。

Dir.glob("**{,/*/**}/*.rb")

(私のテストでは)1つのシンボリックリンクをたどり、直接の子を返します。

于 2010-04-27T18:48:18.100 に答える
12

無限ループのリスクがあるため、通常は再帰検索を使用しません。

しかし、この議論は役立つかもしれません:

Dir.glob("**/*/**/b")シンボリックリンクを 1 回までたどります。

于 2008-12-10T22:15:33.160 に答える