명령 줄을 사용하여 지정된 경로에서 node_modules 폴더를 재귀 적으로 삭제


92

로컬 디렉토리에 여러 npm 프로젝트가 저장되어 있습니다. 이제는 node_modules많은 공간을 차지하고을 사용하여 언제든지 검색 할 수 있으므로 폴더 없이 내 프로젝트를 백업하고 싶습니다 npm install.

따라서 명령 줄 인터페이스를 사용하여 지정된 경로에서 모든 node_modules 폴더를 재귀 적으로 삭제하는 솔루션이 필요합니다. 모든 제안 / 도움은 매우 감사합니다.

답변:


224

삭제할 디렉토리 목록을 인쇄합니다.

find . -name 'node_modules' -type d -prune

현재 작업 디렉토리에서 디렉토리 삭제 :

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +

또는 단계적 삭제를 위해 휴지통 ( brew install trash)을 사용할 수 있습니다 .

find . -name node_modules -type d -prune -exec trash {} +

26
-prune중요한 최적화입니다. 그것은으로 재귀하지 찾을 경우 것입니다 node_module(중첩 node_modules을 찾기 위해) 디렉토리
rzymek

1
프로젝트의 /node_modules/gulp-server-livereload/node_modules: Directory not empty경우 많은 "내부"node_modules 폴더에 들어갑니다. 이 문제를 해결하는 방법은 무엇입니까?
josemigallas

15
이것은 마치, 진지합니다.이 코드를 복사하기 위해이 답변에 20 번째로 있습니다. xD
Cipi

6
의 의미는 '{}' +무엇입니까?
Rokit

3
{}find찾은 파일 경로로 대체 되는 자리 표시 자입니다 . 각각에 대해 실행하지 않고 단일 명령에 모든 파일 경로를 추가하도록 +지시 find합니다 rm.
Tamlyn

24

수용된 답변을 개선하고,

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +

나는 명령은 내가 사용하는 것이 좋습니다하려는 명령 재개를 만들기 위해, 모든 폴더를 가져 오기 한 후 삭제 명령을 실행하는 데 시간이 오래 실행하는 것을 발견 \;하고 명령 실행되고 사용의 진행 상황을 볼 수 -print있는 디렉토리가 삭제되는 것을 볼 수 있습니다.

참고 : 먼저해야한다 cd루트 디렉토리에 다음 명령을 실행하거나 대신 find .사용find {project_directory}

폴더를 하나씩 삭제하려면

find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \;

폴더를 하나씩 삭제하고 삭제중인 폴더를 인쇄하려면

find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;

편집하다:

대화식 방법을 좋아하는 사람들은 @jeckep 답변을 참조하십시오. 정리하려는 디렉토리에서 이것을 실행하십시오.

npx npkill

허용 대답의 @Sidharth에 좋은 개선, 많은 감사
nclarx


10

이 솔루션을 발견했습니다.

  • 먼저 사용하여 폴더를 찾고 폴더 find이름을 지정하십시오.
  • 재귀 적으로 삭제 명령 실행 -exec rm -rf '{}' +

다음 명령을 실행하여 폴더를 재귀 적으로 삭제하십시오.

find /path -type d -name "node_modules" -exec rm -rf '{}' +


1

bash제거하는 기능 node_modules. node_modules발견 된 경로를 인쇄하는 동안 현재 작업 디렉토리에서 모든 디렉토리를 재귀 적으로 제거합니다 .

당신은 당신의 어딘가에 넣어야합니다 $PATH

rmnodemodules(){

  find . -name 'node_modules' -type d -prune -exec echo '{}' \; -exec rm -rf {} \; 

}

0

이것은 정말 잘 작동합니다

find . -name "node_modules" -exec rm -rf '{}' +

2
이것은 설명이없는 이전 답변의 중복입니다.
moopet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.