내 개발 루트 디렉터리에서 모든 디렉터리를 찾고 싶습니다 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