node_modulesというサブディレクトリを除き、node_modulesという名前のすべてのディレクトリを探します。

node_modulesというサブディレクトリを除き、node_modulesという名前のすべてのディレクトリを探します。

私の開発ルートディレクトリからすべてのディレクトリを探したいですnode_modules。問題は、それnode_modules自体にというサブディレクトリが含まれていることですnode_modules。最上位node_modulesフォルダだけを見つける方法は?私は試した:

find -iname "node_modules" | grep -P 'node_modules.*(?!node_modules)'

ただし、サブディレクトリはフィルタリングされません。

答え1

node_modulesディレクトリが見つかったら、検索でそのディレクトリを「削除」する必要があります。

find . -name 'node_modules' -prune

例:

$ mkdir foo/{a,a/b,a/b/c,}/node_modules/{a,a/b,a/b/c,}/node_modules/ -p; cd foo
$ find . -name 'node_modules'
./a/b/c/node_modules
./a/b/c/node_modules/a/b/c/node_modules
./a/b/c/node_modules/a/b/node_modules
./a/b/c/node_modules/a/node_modules
./a/b/c/node_modules/node_modules
./a/b/node_modules
./a/b/node_modules/a/b/c/node_modules
./a/b/node_modules/a/b/node_modules
./a/b/node_modules/a/node_modules
./a/b/node_modules/node_modules
./a/node_modules
./a/node_modules/a/b/c/node_modules
./a/node_modules/a/b/node_modules
./a/node_modules/a/node_modules
./a/node_modules/node_modules
./node_modules
./node_modules/a/b/c/node_modules
./node_modules/a/b/node_modules
./node_modules/a/node_modules
./node_modules/node_modules
$ find . -name 'node_modules' -prune
./a/b/c/node_modules
./a/b/node_modules
./a/node_modules
./node_modules

関連情報