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

관련 정보